如何设置模型值与视图元素文本在javascript (MVC 4)

how to set model value with view element text in javascript (MVC 4)

本文关键字:文本 元素 javascript MVC 视图 何设置 设置 模型      更新时间:2023-09-26

我想让我的模型由视图元素的值设置。然后在javascript中以model属性值作为参数调用控制器中的方法。

做这件事的最好方法是什么?

类似:

@Model.Attribute = $(ElementId).val(); //<- how can I do this?
'@Html.Action("GetPeople", new { id = @Model.Attribute})';

我一直在调查,但我找不到这样做的方法。我阅读并尝试视图和模型之间的绑定。但是当我调用@Model。属性,该值始终为default。即使我改变了文本框的值,模型属性也不会改变。

@Html.TextBoxFor(m => m.Code, new { id = "txtAttribute"})

我在控制器中绑定了模型属性正如你所看到的

 public ActionResult Index()
        {
            var model = new MyModel();
            View("Default", model);
        }

我试过很多事,但都失败了

var modelattribute = '@Model.Attribute';
modelattribute = '@ViewData["ModelAttribute"]';
modelattribute = '@Html.Raw(Model.Attribute)'
modelattribute = '@Html.raw(json.encode(Model.Attribute))'

这可能吗?还是我需要改变我的算法?

UPDATE: my model code

public class MyModel
{
    public string Attribute{ get; set; }

}

非常感谢。Nelssen

你可以设置一个javascript变量的值从你的模型喜欢:var modelattribute = "@Model.Attribute";至于将模型数据传递到控制器,到目前为止最简单的方法是使用隐藏表单元素:

//JAVASCRIPT
function postDataToController() {
    var form = document.createElement("form");
    form.setAttribute("action", "submitFormData");
    var hiddenElement = document.createElement("input");
    hiddenElement.setAttribute("name","attributeName");
    $(hiddenElement).val("attribute value");
    $(form).append(hiddenElement);
    $(form).submit(); 
}
//C#
[HttpPost]
public void submitFormData(MyModel model) {
    System.Collections.Specialized.NameValueCollection nvc = Request.Form;
    model.Attribute = nvc["attributeName"];
}