Asp.Net MVC3 - 我可以调用字段“Id”而不让它包含页面 ID 吗?

本文关键字:包含页 ID MVC3 Net 我可以 调用 Id 字段 Asp | 更新日期: 2023-09-27 18:32:52

我对显示被发送到特定位置的订单列表的 ASP.NET MVC 页面有问题。该页面称为Orders/DispatchToCentre/2其中2是数据库中中心的ID,并且显示正常。

问题是我希望能够回发对页面上订单的更改,所以我这样做:

<dl class="orders">
@foreach (OrderViewModel ovm in Model)
{
    <dd>@ovm.User.Name </dd>
    <dt>
    @Html.Partial("OrderTable", ovm)
    <p>
    @using (Html.BeginForm("Dispatch", "Order", new { id = ovm.Id }, FormMethod.Post ) )
    {
       @Html.TextBox("id", ovm.Id );
       @Html.Hidden("OriginatingPage", Request.Path);
       <input type="submit" name="submit-@ovm.Id" value="Order dispatched" />         
    }   
    </p>
    </dt>
}
</dl>

问题是当我查看页面源代码时,我得到这个:

  <p>
    <form action="/Order/Dispatch/3f180e5b-d112-4245-98ef-602e86eccda6" method="post">
      <input id="id" name="id" type="text" value="2" />
      <input id="OriginatingPage" name="OriginatingPage" type="hidden" value="/Order/DispatchToCentre/2" />       
      <input type="submit" name="submit-3f180e5b-d112-4245-98ef-602e86eccda6" value="Order dispatched" />         
    </form>    
  </p>

id输入似乎完全忽略了我明确设置它OrderViewModel.Id(这应该是一个 Guid(,并自动将自身设置为使用路径中的中心 ID。

我是否需要使用一些配置来避免这种干扰自动性,或者我最好只是忽略这里的帮助程序并手动创建字段?显然,后者是一项相当微不足道的任务,但了解我是否在概念上误解了 Razor 渲染操作的某些重要方面,或者我只是遇到了一个怪癖,这将是有帮助的。

Asp.Net MVC3 - 我可以调用字段“Id”而不让它包含页面 ID 吗?

在控制器中,HttpGet操作,在返回视图之前,您应该调用

ModelState.Remove("id");

事实上,ModelState在提供模型值方面比提供模型本身具有更高的优先级,因此来自 ModelState 的值始终优先(如果有(而不是模型值