c# - MVC 3 - 在服务器端获取下拉列表中的值在 JavaScript 上更改

标签 c# javascript asp.net-mvc asp.net-mvc-3 razor

我有一个 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>

改变下拉列表和隐藏值的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;
}

回到服务器端,我正在尝试将值保存在数据库中。

public void UpdateCategoriaForContentItem(ContentItem item, EditCategoriaViewModel model)
{
    if ((model.CategoriaId != null)||(model.hndCategoriaId != null)) // both are null
    {...}
}

谢谢

最佳答案

您需要将隐藏值绑定(bind)到模型

@Html.HiddenFor(m=>m.hdnCategoriaId)
or
@Html.Hidden("hdnCategoriaId",Model.hdnCategoriaId,Model)

要在下拉更改事件中设置隐藏字段的值,您只需执行以下操作

$('#hdnCategoriaId').val(valueArtigo)

关于c# - MVC 3 - 在服务器端获取下拉列表中的值在 JavaScript 上更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12151416/

相关文章:

c# - ASP.NET Web API 中的内容协商

c# - .NET 中的对象-对象映射有哪些不同的方法?

php - 将新页面加载到带有动画的 div 中的 jquery 问题

javascript - jquery 通过 id 选择当前正在播放的音频

asp.net - MVC 5 和声明默认身份验证的使用

c# - 在 asp.net mvc 中没有删除 header 服务器

c# - 统一编写txt文件时,它说在路径上共享冲突

c# - 等效于 SQL 语句的 LINQ 语句

JavaScript 变量声明 : what is "var myVariable = {}"?

asp.net-mvc - .net MVC Controller 操作方法的属性