我有一个包含局部视图的视图。我需要将父视图中的值传递给局部视图。我是这样做的:
<div>
@Html.Partial("_DrugScan", new TIMS.Models._DrugScan() { ASNID = Model.ASNID })
</div>
“_DrugScan”类只包含两个属性,即ASNID和UPC。局部视图使用表单来填充UPC,如下所示:
@model TIMS.Models._DrugScan
@*@Scripts.Render("~Scripts/ScanDrugPost.js")*@
<div>
@using (Html.BeginForm("DrugScan", "Receive", FormMethod.Post, new { @class = "form-horizontal", role = "form"}))
{
@Html.AntiForgeryToken()
<dl class="dl-horizontal">
<dt>
@Html.Label("Scan Drug UPC")
</dt>
<dd>
@Html.Kendo().MaskedTextBoxFor(x => x.UPC).Mask("000000000000").PromptChar("-").HtmlAttributes(new {@id="UPC_textbox"})
</dd>
</dl>
}
</div>
我遇到的问题是,当我提交表单时,会填写UPC属性,但ASNID将返回null / default。我可以在页面中找到一个断点,看到ASNID设置得当,但在提交时丢失了。我做错了什么?
答案 0 :(得分:3)
当您提交表单时,它会使用表单内输入的值填充请求表单数据。
您在表单上的唯一输入是UPC字段的输入。
您需要添加一个输入,将您的其他字段(ASNID)存储在表单中。我假设您不想向用户显示此值,因此您可以使用隐藏字段。
@model TIMS.Models._DrugScan
@*@Scripts.Render("~Scripts/ScanDrugPost.js")*@
<div>
@using (Html.BeginForm("DrugScan", "Receive", FormMethod.Post, new { @class = "form-horizontal", role = "form"}))
{
@Html.AntiForgeryToken()
@Html.HiddenFor(x => x.ASNID)
<dl class="dl-horizontal">
<dt>
@Html.Label("Scan Drug UPC")
</dt>
<dd>
@Html.Kendo().MaskedTextBoxFor(x => x.UPC).Mask("000000000000").PromptChar("-").HtmlAttributes(new {@id="UPC_textbox"})
</dd>
</dl>
}
</div>