首页 > 解决方案 > 如何将 HTML 页面中的 JS 变量值获取到控制器中的模型变量上

问题描述

在我的 HTML 页面中,我有一个变量,该变量的值需要从 MVC 项目中填充模型类中的变量。

我怎样才能用几行代码来完成这个?

这是我尝试过的:

索引.cshtml:

var mana = document.getElementById("ID").value;
var MyAction = '@Url.Action("MyAction", "Home")';

$.ajax({
    type: "POST",
    url: MyAction,
    data: { 'myVar': mana },
    success: function (result) {
        $('#ResultsDiv').html(result);
        @{
            var inventoryObj = Model.InventoryDataList.Where(x => x.ID == Int32.Parse(Model.grabTest)).Select(x => x.DAYOFWEEK);
            var inventoryJson = new JavaScriptSerializer().Serialize(inventoryObj);

          }

        var inventoryRefined = JSON.parse('"@inventoryJson"');
        var InventoryDataList = JSON.parse(htmlDecode(inventoryRefined));
        console.log(InventoryDataList);
    }

});

HomeController.cs:

public ActionResult MyAction(Models model, string myVar)
    {

        model.grabTest = myVar;
        //My Action Code Here
        return Json(true, JsonRequestBehavior.AllowGet);
    }

模型.cs:

public string grabTest = "";

我想完成什么?

我的 LINQ 需要一个参数 (ID) 来过滤对象列表。这个值来自一个 JS 变量……你看我需要在哪里使用 ajax。

我的想法是使用 ajax 将 JS 变量发送到 actionresult 以将值存储在 Models.cs 中的公共变量上。

简单的想法,但我的执行很糟糕,想法?

标签: javascriptc#ajaxasp.net-mvc

解决方案


尝试在MyAction方法中设置模型的值,而不是将其声明为参数

为此,请Models在代码块中声明您的类的新实例,从那时起,您现在可以将myVar参数值分配给您的Models实例

public ActionResult MyAction(string myVar)
{
   var myModel = new Models();
   myModel.grabTest = myVar;
   //My Action Code Here

   return Json(true, JsonRequestBehavior.AllowGet);
}

推荐阅读