id的值如何从操作方法转移到视图

本文关键字:操作方法 转移 视图 id | 更新日期: 2023-09-27 18:24:54

我有一个方法AddAddress(int Id),我无法计算Id的值如何进入视图(当我检查渲染视图的view source时,值就在那里)。

我必须创建更复杂但类似的方法,我只是不知道Id的值如何进入渲染视图。我只需要知道它是怎么发生的。非常感谢

AddAddress方法:

[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"/>
}

id的值如何从操作方法转移到视图

您的剃刀视图是强类型为AddressModel类的。因此,在您的GET操作方法中,创建一个AddressModel类的对象,将Id属性值设置为作为参数的操作方法的任何值,并将此对象发送到视图。

[HttpGet]
public ActionResult AddAddress (int Id)
{      
    var model = new AddressModel();
    model.Id = id;
    return View(model);
}

您需要从操作方法显式地将数据传递到视图。没有其他神奇的方法可以做到这一点。如果不这样做,它仍然具有整数类型属性的默认值,即0。