MVC3 通过元素 ID 检索部分视图值.解决方案是什么
本文关键字:视图 解决方案 是什么 检索部 元素 ID MVC3 | 更新日期: 2023-09-27 18:31:25
很抱歉打扰,我对 MVC3 相当陌生,我一直在寻找 3 天但没有解决方案。
问题看起来像这样。我有一个视图,其中有另一个使用 @html.Partial
的部分视图。
在部分视图中,我有一个双选框,它允许我将用户从一侧移动到另一侧。
我的问题是,当我发布我的主表单时,我怎样才能也发布我的部分表单中的信息,更准确地说是第二个选择框数据,因为我已经尝试了所有方法但没有成功。这里还有代码,非常感谢您的帮助。
主视图:(没有从头开始复制,因为我认为它没有帮助)
<div class="editor-field">
@Html.TextBoxFor(v => v.Voyage.DateOfArrival, new { @class = "date", id = "arrival" })
</div>
<div class="editor-label">
@Html.LabelFor(v => v.Voyage.MarginOfErrorTime, "Allowed margin of error")
</div>
<div class="editor-field">
@Html.EditorFor(v => v.Voyage.MarginOfErrorTime)
</div>
<p>
<input type="submit" value="Create" />
</p>
</div>
<div class="partial-view">
@Html.Partial("_UserAddingOptions", Model)
</div>
</fieldset>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
这是部分视图:
<script language="javascript" type="text/javascript">
$(function () {
$.configureBoxes();
});
</script>
@using (Html.BeginForm())
{
<table>
<tr>
<td>
Filter:<br />
<input type="text" id="box1Filter" style="width: 160px;" />
<button type="button" id="box1Clear">
X</button><br />
<select id="box1View" multiple="multiple" style="height: 240px; width: 200px;">
@foreach (var user in Model.Users)
{
<option>@user.FirstName @user.LastName</option>
}
</select><br />
<span id="box1Counter" class="countLabel"></span>
<select id="box1Storage">
</select>
</td>
<td style="width: 28px; vertical-align: middle;">
<button id="to2" type="button">
></button>
<button id="to1" type="button">
<</button>
</td>
<td>
Filter:<br />
<input type="text" id="box2Filter" style="width: 160px;" />
<button type="button" id="box2Clear">
X</button><br />
<select id="box2View" multiple="multiple" style="height: 240px; width: 200px;">
</select><br />
<span id="box2Counter" class="countLabel"></span>
<select id="box2Storage">
</select>
</td>
</tr>
</table>
}
我只有一个用于主视图的控制器,当我提交主表单时,我有什么可行的解决方案将部分视图信息从 (id = box2View) 发布到控制器?
可以看到两个错误,还有一个建议:
1)你在那里有一个嵌套的表单 - 除非有其他视图,部分用于提交内容本身(可能不是,因为你正在使用BeginForm
它总是回发到当前的控制器/视图)。 删除分部视图上的表单标记。
2) ...这是主要问题 - 您对部分的输入都没有name
。 如果他们没有name
,那么他们不会提交任何内容:
<select id="box2View" name="box2View" ...
3)我知道你是一个自认的初学者 - 所以你会从我建议你查看一些关于模型绑定的演练指南中受益。 手动写出所有表单元素,手动吐出option
标签等,是不必要的。 简单的 MSDN 主题 MVC Asp.Net 中的模型和验证值得一看 - 特别是请注意那里的视图代码 - 一切都是从模型中完成的,没有显式<input type="textbox"
等。
窗体外部有 submot 按钮,可以将其移动到代码块内部分视图中的窗体中,@Html.BeginForm()
,也可以在单击窗体时使用 javascript 发布窗体。
<input type="button" onclick="$('#someForm').submit();" /> //someForm is id of the form.