0

抱歉打扰,我对 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)发布到控制器吗?

4

2 回答 2

0

您在表单外有 submot 按钮,您可以将其移动到代码块内部分视图内的表单中,@Html.BeginForm()或者在单击表单时使用 javascript 发布表单。

<input type="button" onclick="$('#someForm').submit();" /> //someForm is id of the form.
于 2012-04-16T06:49:58.263 回答
0

我可以看到两个错误和一个建议:

1)您在那里有一个嵌套表单 - 除非有其他视图在其上部分用于提交自己的东西(可能不是,因为您使用BeginForm它总是回发到当前的控制器/视图)。去掉部分视图上的表单标签。

2) ...这是主要问题 - 您对部分的输入都没有names。如果他们没有names 那么他们就不会提交任何东西:

<select id="box2View" name="box2View" ...

3) 你是一个自认是初学者,我知道 - 所以你会从我建议你查看一些关于模型绑定的演练指南中受益。手动写出所有表单元素,手动吐出option标签等是不必要的。简单的 MSDN 主题Asp.Net MVC中的模型和验证值得一看 - 特别注意那里的视图代码 - 一切都是从模型完成的,没有显式<input type="textbox"等。

于 2012-04-16T07:37:45.247 回答