Asp.net mvc Asp.NETMVC4中的DropDownListFor
我有一个Asp.NETMVC4中的示例应用程序。我找不到从DropDownListFor帮助程序获取所选id并将其作为参数分配给ActionLink的方法 这是我的模型:Asp.net mvc Asp.NETMVC4中的DropDownListFor,asp.net-mvc,dropdownlistfor,Asp.net Mvc,Dropdownlistfor,我有一个Asp.NETMVC4中的示例应用程序。我找不到从DropDownListFor帮助程序获取所选id并将其作为参数分配给ActionLink的方法 这是我的模型: public class EmpresaLibroViewModel { //property a usar en vista Index ya que son iterables public IEnumerable<EmpresaModel> Empresas { get; set; }
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; }
}
公共类EmpresaLibroViewModel
{
//房地产a usar en vista索引可扩展性
公共IEnumerable Empresas{get;set;}
公共IEnumerable Bancos{get;set;}
公共IEnumerable Libros{get;set;}
//财产(第二部分,编辑)
公共Empresa模型Empresa{get;set;}
公共bancomodelbanco{get;set;}
公共LibroModel Libro{get;set;}
}
以下是编辑方法,我希望在其中获取选定的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>
}
@model mvcapapplication1.ViewModels.EmpresaLibroViewModel
@{
ViewBag.Title=“编辑”;
}
编辑
@使用(Html.BeginForm())
{
@Html.ValidationSummary(true)
经营模式
@Html.HiddenFor(model=>model.Empresa.EmpresaModelID)
@LabelFor(model=>model.Empresa.Nombre)
@EditorFor(model=>model.Empresa.Nombre)
@ValidationMessageFor(model=>model.Empresa.Nombre)
@LabelFor(model=>model.Empresa.Cuit)
@EditorFor(model=>model.Empresa.Cuit)
@Html.ValidationMessageFor(model=>model.Empresa.Cuit)
Tiene libros en:
@foreach(Model.Libros中的var unitem)
{
@unitem.Bancos.Nombre(empresa:@unitem.EmpresaModelID-banco:@unitem.BancoModelID)
@ActionLink(“(eliminar)”,“DesvincularBanco”,新的{id=unitem.LibroModelID,idEmp=unitem.EmpresaModelID})
}
阿格雷加:
@DropDownListFor(model=>model.Banco.bancomodel,新选择列表(model.Bancos,“bancomodel”,“Nombre”))
@ActionLink(“(agregarlo)”,“VincularBanco”,新的{idempresa=Model.Empresa.EmpresaModelID,idbanco=10})
}
最好的方法是什么?
谢谢
注意:idBanco=10已设置为验证是否正在使用ActionLink。我知道该值必须来自DropDownListfor。在jquery的帮助下,您可以轻松地完成此操作 首先,向actionlink添加一个id:
@Html.ActionLink("RegisterModules", "Home", new { idempresa =5, idbanco = 10 }, new { id = "myLink" })
现在将脚本添加到您的视图中(我更愿意将其添加到javascript文件中,并将该文件打包并添加到此页面):
$(文档).ready(函数(){
$('select[id*=“Banco”]”)。更改(函数(){
var lnk=$('#myLink').attr('href');
var givenval=$('select[id*=“Banco”]”)。val();
var result=lnk.split(“idbanco=”)
如果(result.length>1){
lnk=结果[0]+“idbanco=“+givenval;
}
$('#myLink').attr('href',lnk);
});
});
并确保jquery已添加到此页面。你完了 谢谢你的回答。不使用javascript也可以吗?您必须更改客户端的值。很抱歉,我认为您没有任何选择,除非您想发布表单(在这种情况下,在发布的模型中,您将找到选定的值)。好的,该场景中的唯一选项是发布表单或使用javascript了解DropDownListFor中的选定选项?在您的代码中,您使用
发布表单,这是正常的。我不建议改变它。对于重定向或任何客户端操作,使用javascript、jquery和ajax在MVC中是正常的。
<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>