0

申し訳ありませんが、私はMVC3にかなり慣れておらず、3日間探していましたが、解決策はありません。

問題は次のようになります。を使用して別の部分ビューを持つビューがあります@html.Partial

部分ビューには、ユーザーを一方の側からもう一方の側に移動できる二重選択ボックスがあります。

私の質問は、メインフォームを投稿するときに、部分フォームからの情報、より正確には2番目の選択ボックスデータも投稿する方法です。すべてを試しましたが、成功しませんでした。また、ここにコードがあります、そしてあなたの助けは大歓迎です。

メインビュー:(役に立たないと思うので最初からコピーされていません)

<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

フォームの外側にサブモットボタンがあります。コードブロック内の部分ビュー内にあるフォームに移動するか、@Html.BeginForm()クリックされたときにjavascriptを使用してフォームを投稿します。

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

私が見ることができる2つの間違いと1つの助言:

1)そこにネストされたフォームがあります-パーシャルがそれ自体でコンテンツを送信するために使用される他のビューがない限り(おそらくBeginForm、現在のコントローラー/ビューにポストバックするために使用しているため、おそらくそうではありません)。部分ビューのフォームタグを削除します。

2)...そしてこれが主な問題です-パーシャルへの入力にはnamesがありません。がない場合は、name何も送信しません。

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

3)あなたは自白の初心者です、私は知っています-それであなたはモデルバインディングに関するいくつかのウォークスルーガイドを調べるようにあなたにアドバイスする私から利益を得るでしょう。すべてのフォーム要素を手動で書き出す、optionタグを手動で吐き出すなどは不要です。簡単なMSDNトピックAsp.NetMVCのモデルと検証は一見の価値があります-特にそこにあるビューコードに注意してください-すべてがモデルから行われ、明示的なもの<input type="textbox"などはありません。

于 2012-04-16T07:37:45.247 に答える