Dan*_*roz 2 javascript c# asp.net-mvc razor asp.net-mvc-3
我有一个javascript,可以从我的下拉列表中更改值,当我保存表单时,无法在服务器端捕获该值.
下面是一些代码:
<div class="editor-field">
@Html.DropDownListFor(model => model.CategoriaId,
Model.Categorias
.Where(c => c.Id != Model.ContentId)
.Select(c => new SelectListItem {
Selected = c.Id == Model.CategoriaId,
Text = c.Type + " - " +c.Name,
Value = c.Id.ToString()
} ),
"Selecione uma Categoria")
@Html.Hidden("hdnValue", Model.hndCategoriaId) // my hidden value
</div>
Run Code Online (Sandbox Code Playgroud)
更改下拉列表和隐藏值的Javascript
function change(item) {
var valueArtigo;
var ddl = document.getElementById('Categoria_CategoriaId');
for (i = 0; i < ddl.options.length; i++) {
if (ddl.options[i].text.toUpperCase().indexOf("ARTIGOS") != -1)
valueArtigo = ddl.options[i].value;
}
document.getElementById("Categoria_CategoriaId").value = valueArtigo;
document.getElementById("Categoria_hdnValue").value = valueArtigo;
}
Run Code Online (Sandbox Code Playgroud)
回到服务器端,我试图保存数据库的价值.
public void UpdateCategoriaForContentItem(ContentItem item, EditCategoriaViewModel model)
{
if ((model.CategoriaId != null)||(model.hndCategoriaId != null)) // both are null
{...}
}
Run Code Online (Sandbox Code Playgroud)
谢谢,
您需要将隐藏值绑定到模型
@Html.HiddenFor(m=>m.hdnCategoriaId)
or
@Html.Hidden("hdnCategoriaId",Model.hdnCategoriaId,Model)
Run Code Online (Sandbox Code Playgroud)
要在下拉列表更改事件中设置隐藏字段的值,您可以这样做
$('#hdnCategoriaId').val(valueArtigo)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
946 次 |
| 最近记录: |