MVC3:将用户输入的ID作为参数传递给控制器​​方法

问题描述:

我有一个视图,用户将输入一个ID,该ID将传递给控制器​​方法,然后该控制器方法将填充包含相关患者记录的视图。MVC3:将用户输入的ID作为参数传递给控制器​​方法

我是MVC的新手,无法从文本框中获取ID并将其传递给控制器​​方法。我感谢任何帮助。

笔者认为:

@model Final.Models.Patient 

@Html.TextBoxFor(model => model.Patient_ID) 
@Html.ActionLink("Patient", "Details", new { id=???? }) 

在我的控制器:

public ViewResult Details(decimal id) 
    { 
     Patient patient = db.Patients.Single(p => p.Patient_ID == id); 
     return View(patient); 
    } 

感谢。

我能够使其与以下工作:

@using (@Html.BeginForm("Details", "Patient")) { 
@Html.TextBoxFor(model => model.Patient_ID) 
<input type="submit", value="Submit"/> 



public ActionResult Details(Patient _patient) 
     { 
      decimal id = _patient.Patient_ID; 

      Patient patient = db.Patients.Single(p => p.Patient_ID == id); 
      return View(patient); 
     } 

在控制器

[HttpPost] 
    public ActionResult Details(Patient _patient) 
    { 
     decimal id = _patient.Patient_ID 
     Patient patient = db.Patients.Single(p => p.Patient_ID == id); 
     return View(patient); 
    } 
+0

为了接收提交到控制器在ActionResult模型中,你的控制器的代码块会说ActionResult而不是ViewResult是否正确? – HendPro12

+0

和Im不确定代替id =后面的问号放置什么。也有点困惑,为什么你显示病人被传递到控制器而不是身份证。 – HendPro12

接收模式中的ActionResult,而不是

@model Final.Models.Patient 
@usign (@BeginForm("Details","Controller"){ 
@Html.TextBoxFor(model => model.Patient_ID) 
@Html.ActionLink("Patient", "Details", new { id=???? }) 
<input type="submit", value="Submit"/> 
} 

是jQuery的方法可接受您?您可以分配一个id,文本框,然后得到的值(由用户输入的ID),然后使用$就

@Html.TextBoxFor(model => model.PatientID, new { id = "patient"}) 

$.ajax({ 
      url: '/Home/Details', 
      type: 'POST', 
      data: { id: $('#patient').val()}, 
      async: false, 
      success: function (result) { 
       alert('success!'); 
      } 
     }); 

希望这有助于你:)

+0

我想弄清楚如何使它与你的方法一起工作。我熟悉js文件并引用了jQuery库,但我从未使用过ajax。这是否只涉及另一个库参考使用?我假设jQuery/ajax代码将进入一个js文件,并且我需要我的控制器中的东西以及...正确? – HendPro12

+0

不,你不需要额外的东西,参考jquery会做的。此外,您的控制器只接受数据中的“id”参数,没有其他您需要更改:) – shennyL

+0

http://api.jquery.com/jQuery.ajax/请参阅此:) – shennyL