【问题标题】:Passing displayed ViewModel data along with textbox data to Controller asp.net mvc 3将显示的 ViewModel 数据与文本框数据一起传递给控制器​​ asp.net mvc 3
【发布时间】:2011-08-31 03:42:01
【问题描述】:

ViewModel 类

public class CreateMRViewModel
{
    public Decimal? Freight { get; set; }
    public IList<OrderLine> OrderLines { get; set; }
}

public class OrderLine
{
    public string LineNumber { get; set; }
    public string VendorPartNumber { get; set; }
    public long? Quantity { get; set; }
    public string UOM { get; set; }
    public decimal PricePerUom { get; set; }
    public long? ReturnQuantity { get; set; }
    public long? QuantityAvaiToReturn { get; set; }
}

我的观点

@model CreateMRViewModel
@using (Html.BeginForm()) {
<fieldset>
    <table>
        <tr>
            <th>Line Number</th>
            <th>Part Number</th>
            <th>UOM</th>
            <th>PricePerUom</th>
            <th>Available Qty</th>
            <th>Return Qty</th>
        </tr>
        @for (int i = 0; i < Model.OrderLines.Count; i++)
        {
        <tr>
            <td>@Html.DisplayFor(modelItem => Model.OrderLines[i].LineNumber)</td>
            <td>@Html.DisplayFor(modelItem => Model.OrderLines[i].VendorPartNumber)</td>
            <td>@Html.DisplayFor(modelItem => Model.OrderLines[i].UOM)</td>
            <td>@Html.DisplayFor(modelItem => Model.OrderLines[i].PricePerUom)</td>
            <td>@Html.DisplayFor(modelItem => Model.OrderLines[i].Quantity)</td>
            <td>@Html.TextBoxFor(modelItem => Model.OrderLines[i].ReturnQuantity)</td>
        </tr>
        }
    </table>
    <br />
    <div class="display-label">@Html.LabelFor(model => Model.Freight)</div>
    <div class="display-field">@Html.TextBox("Freight", new Int64())</div>
    <br />
    <br />
    <input class="submitForm" type="submit" value="Create Return" />
</fieldset>
}

动作控制器

[HttpPost]
public ActionResult CreateMR(CreateMRViewModel mrViewModel)
{
    //some code here
}

我的问题是:我将 CreateMRViewModel 获取到控制器,但只有文本框值可供我使用。如何获取 LineNumber 或 VendorPartNumber 等显示值以用于控制器方法?

【问题讨论】:

    标签: asp.net-mvc-3 binding controller viewmodel


    【解决方案1】:

    由于您使用的是DisplayFor(),因此您实际上并没有为Properties 发布任何值

    如果您只是想将其传递给 [HttpPost] 方法,则需要使用隐藏输入来表示它或使其可编辑。

    <td>
        @Html.DisplayFor(modelItem => Model.OrderLines[i].VendorPartNumber)
        @Html.HiddenFor(modelItem => Model.OrderLines[i].VendorPartNumber)
    </td>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多