1

Asp.Net MVC 4 にサンプル アプリケーションがあります。選択した ID を DropDownListFor ヘルパーから取得し、それをパラメーターとして ActionLink に割り当てる方法が見つかりません。

ここに私のモデルがあります:

public class EmpresaLibroViewModel
{
    //property a usar en vista Index ya que son iterables
    public IEnumerable<EmpresaModel> Empresas { get; set; }
    public IEnumerable<BancoModel> Bancos { get; set; }
    public IEnumerable<LibroModel> Libros { get; set; }

    //property que van a contener solo un registro (para Detalles, Editar)
    public EmpresaModel Empresa { get; set; }
    public BancoModel Banco { get; set; }
    public LibroModel Libro { get; set; }
}

選択した Banco ID を取得し、パラメーターとして ActionLink に送信する Edit メソッドを次に示します。

@model MvcApplication1.ViewModels.EmpresaLibroViewModel

@{
    ViewBag.Title = "Edit";
}

<h2>Edit</h2>

@using (Html.BeginForm())
{


   @Html.ValidationSummary(true)

<fieldset>
    <legend>EmpresaModel</legend>

    @Html.HiddenFor(model => model.Empresa.EmpresaModelID)

    <div class="editor-label">
        @Html.LabelFor(model => model.Empresa.Nombre)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.Empresa.Nombre)
        @Html.ValidationMessageFor(model => model.Empresa.Nombre)
    </div>

    <div class="editor-label">
        @Html.LabelFor(model => model.Empresa.Cuit)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.Empresa.Cuit)
        @Html.ValidationMessageFor(model => model.Empresa.Cuit)
    </div>

    <h3>Tiene libros en:</h3>
    <table>
            @foreach (var unitem in Model.Libros)
            {
            <tr>
                <td>
                    @unitem.Bancos.Nombre (empresa:@unitem.EmpresaModelID - banco:@unitem.BancoModelID)
                    @Html.ActionLink("(eliminar)", "DesvincularBanco", new { id = unitem.LibroModelID, idEmp = unitem.EmpresaModelID })
                </td>
            </tr>
            }
    </table>
    <h3>Agregar:</h3>
    @Html.DropDownListFor( model => model.Banco.BancoModelID , new SelectList(Model.Bancos, "BancoModelID", "Nombre")))
    @Html.ActionLink("(agregarlo)", "VincularBanco", new { idempresa=Model.Empresa.EmpresaModelID , idbanco=10 }  )

    <p>
        <input type="submit" value="Save" />
    </p>
</fieldset>
}

それを行う最良の方法は何ですか?ありがとう。

注: idBanco=10 は、ActionLink の動作を確認するために設定されています。その値は DropDownListfor からのものでなければならないことはわかっています。

4

1 に答える 1

0

jqueryを使えば簡単にできます。

まず、アクションリンクに ID を追加します。

@Html.ActionLink("RegisterModules", "Home", new { idempresa =5, idbanco = 10 }, new { id = "myLink" })

次に、スクリプトをビューに追加します(JavaScriptファイルに追加し、ファイルをバンドルしてこのページに追加することをお勧めします):

<script type="text/javascript">
    $(document).ready(function () {
        $('select[id*="Banco"]').change(function () {
            var lnk = $('#myLink').attr('href');
            var givenval = $('select[id*="Banco"]').val();
            var result = lnk.split("idbanco=")

            if (result.length > 1) {
                lnk = result[0] + "idbanco=" + givenval;
            }

            $('#myLink').attr('href', lnk);
        });

    });
</script>

そして、jquery がこのページに追加されていることを確認してください。そして、あなたは完了です!

于 2013-09-08T21:03:51.243 に答える