如何从控制器更新javascript变量?

时间:2015-01-29 21:03:47

标签: javascript asp.net-mvc

我从视图中获取模型:

<script>
    Module.getModel(@Html.Raw(Json.Encode(Model)))
</script>

这称之为:

var getModel = function(model) {
    vModel= model;
};

这适用于初始获取模型,但我需要通过对话框ajax更新其中一个模型值。

var loc = $("#Location").val();
$.ajax({
    url: $("#root").attr("href") + "Home/SetLocation",
    context: $(this),
    type: 'POST',
    data: { location: loc },
    success: function() {
         $(this).dialog("close");
         reloadGrid();
    },
    error: function() {
        alert("There was a problem updating your Location.");
    }
});

控制器操作将位置保存到配置文件并重定向到“索引”操作:

public ActionResult SetLocation(string location)
{
    _dashboardTasks.SaveLocationToProfile(location);            
    return RedirectToAction("Index");
}

使用新的配置文件信息更新模型并将其返回到视图:

public ActionResult Index(HomeViewModel homeViewModel)
{
    SetUserLocation(homeViewModel);
    return View(homeViewModel);
}

此时再次点击第一个代码块上的断点,但永远不会调用它的函数getModel,并且永远不会更新javascript模型。因此,要求网格重新加载的success函数重用旧数据而不是新数据。

如何使用控制器中更改的值更新vModel

我是否必须向success函数添加声明,明确重新定义值?

success: function() {
    $(this).dialog("close");
    vModel.Location = loc;
    reloadGrid();
},

这样可行,但我不明白为什么不使用当前代码更新模型。

0 个答案:

没有答案