DropDownListFor в Asp.Net MVC 4
У меня есть пример приложения в Asp.Net MVC 4. Я не нахожу способ получить выбранный идентификатор из помощника 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; }
}
Вот метод Edit, где я хочу получить выбранный Banco ID и отправить в качестве параметра ActionLink:
@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.
1 ответ
С помощью jquery вы можете сделать это легко.
Во-первых, добавьте идентификатор к вашей ссылке:
@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 добавлен на эту страницу. И все готово!