id 的值如何从操作方法传递到视图
How value of id goes from action method to the view
我有一个方法 AddAddress(int Id)
,但我无法弄清楚 Id 的值如何进入视图(当我检查渲染视图的 view source
时,值就在那里)。
我必须创建更复杂但类似的方法,但我只是不明白 Id
的值如何进入呈现的视图。我只需要知道它是如何发生的。非常感谢
地址方法:
[HttpGet]
public ActionResult AddAddress (int Id)
{
return View();
}
[HttpPost]
public IActionResult AddAddress(AddressModel address)
{
if (!ModelState.IsValid)
{
return View("AddAddress", address);
}
if (!address.Address_Id.HasValue|| address.Address_Id == 0)
{
_addressService.insertAddress(address);
}
else
{
_addressService.updateAddress(address);
}
return RedirectToAction("Index");
}
接收Id的视图:
@model Clients.Models.AddressModel
@using (Html.BeginForm(FormMethod.Post))
{
@Html.ValidationSummary()
@Html.HiddenFor(m => m.Id)<br />
@Html.HiddenFor(m => m.Address_Id)<br />
@Html.LabelFor(m => m.AddressLine_1)
@Html.TextBoxFor(m => m.AddressLine_1)
@Html.ValidationMessageFor(m => m.AddressLine_1)<br />
@Html.LabelFor(m => m.AddressLine_2)
@Html.TextBoxFor(m => m.AddressLine_2)
@Html.ValidationMessageFor(m => m.AddressLine_2)<br />
@Html.LabelFor(m => m.Postcode)
@Html.TextBoxFor(m => m.Postcode)
@Html.ValidationMessageFor(m => m.Postcode)<br />
@Html.LabelFor(m => m.Town)
@Html.TextBoxFor(m => m.Town)
@Html.ValidationMessageFor(m => m.Town)<br />
@Html.LabelFor(m => m.DateMovedIn)
@Html.TextBoxFor(m => m.DateMovedIn)
@Html.ValidationMessageFor(m => m.DateMovedIn)<br />
<input type="submit" value="OK"/>
}
您的 razor 视图被强类型化为 AddressModel
class。因此,在您的 GET 操作方法中,创建一个 AddressModel
class 的对象,将 Id
属性 值设置为您的操作方法作为参数的任何值,并将该对象发送到视图。
[HttpGet]
public ActionResult AddAddress (int Id)
{
var model = new AddressModel();
model.Id = id;
return View(model);
}
您需要明确地将数据从您的操作方法传递到您的视图。没有其他神奇的方法可以做到这一点。如果不这样做,它仍然具有整数类型属性的默认值,即 0。
我有一个方法 AddAddress(int Id)
,但我无法弄清楚 Id 的值如何进入视图(当我检查渲染视图的 view source
时,值就在那里)。
我必须创建更复杂但类似的方法,但我只是不明白 Id
的值如何进入呈现的视图。我只需要知道它是如何发生的。非常感谢
地址方法:
[HttpGet]
public ActionResult AddAddress (int Id)
{
return View();
}
[HttpPost]
public IActionResult AddAddress(AddressModel address)
{
if (!ModelState.IsValid)
{
return View("AddAddress", address);
}
if (!address.Address_Id.HasValue|| address.Address_Id == 0)
{
_addressService.insertAddress(address);
}
else
{
_addressService.updateAddress(address);
}
return RedirectToAction("Index");
}
接收Id的视图:
@model Clients.Models.AddressModel
@using (Html.BeginForm(FormMethod.Post))
{
@Html.ValidationSummary()
@Html.HiddenFor(m => m.Id)<br />
@Html.HiddenFor(m => m.Address_Id)<br />
@Html.LabelFor(m => m.AddressLine_1)
@Html.TextBoxFor(m => m.AddressLine_1)
@Html.ValidationMessageFor(m => m.AddressLine_1)<br />
@Html.LabelFor(m => m.AddressLine_2)
@Html.TextBoxFor(m => m.AddressLine_2)
@Html.ValidationMessageFor(m => m.AddressLine_2)<br />
@Html.LabelFor(m => m.Postcode)
@Html.TextBoxFor(m => m.Postcode)
@Html.ValidationMessageFor(m => m.Postcode)<br />
@Html.LabelFor(m => m.Town)
@Html.TextBoxFor(m => m.Town)
@Html.ValidationMessageFor(m => m.Town)<br />
@Html.LabelFor(m => m.DateMovedIn)
@Html.TextBoxFor(m => m.DateMovedIn)
@Html.ValidationMessageFor(m => m.DateMovedIn)<br />
<input type="submit" value="OK"/>
}
您的 razor 视图被强类型化为 AddressModel
class。因此,在您的 GET 操作方法中,创建一个 AddressModel
class 的对象,将 Id
属性 值设置为您的操作方法作为参数的任何值,并将该对象发送到视图。
[HttpGet]
public ActionResult AddAddress (int Id)
{
var model = new AddressModel();
model.Id = id;
return View(model);
}
您需要明确地将数据从您的操作方法传递到您的视图。没有其他神奇的方法可以做到这一点。如果不这样做,它仍然具有整数类型属性的默认值,即 0。