如何将javascript变量传递给Razor c#代码?

时间:2016-04-18 11:17:46

标签: c# asp.net-mvc

@{
    var Countries=Model.FirstOrDefault(x=>x.Id==**JavaScriptVariable**);

    @Html.Partial("Countries", Countries)

}

我知道它可能使用ajax调用,但是如何将从服务器端返回的json结果分配给Razor c#代码,我应该在返回视图之前将值放在模型或ViewBag中,但我不知道如何编写代码。

3 个答案:

答案 0 :(得分:3)

您不能在c#代码中使用javascript变量。但反过来是可能的。但是,在这种情况下,您必须使用ajax本身来加载局部视图。

你可以尝试的是......

1)创建一个ActionResult,它将返回一个局部视图。 (确保将ActionResult名称设置为与部分视图名称相同,这只是为了减少代码中的混淆。)

2)然后在jquery中点击了这个ActionResult。

类似......

 $.get('/YourController/'+ JavaScriptVariable +'/',function(result){
    //you got the partial view here...
    $('#yourDiv').append(result);
 });

答案 1 :(得分:0)

您应该使用以下行在控制器中分配数据:

    ViewBag.TestVariable = "Test string";

在视图中,您可以访问以下数据:

    @ViewBag.TestVariable 

在您的情况下,我将移动将数据分配给变量“Countries”的逻辑到控制器,然后使用ViewBag存储该数据并从View访问它。

答案 2 :(得分:0)

您可以使用JsonResult类型:

public JsonResult fnname()
    {
        // Do something
        return Json(youJson , JsonRequestBehavior.AllowGet);
    }

Jquery调用以获取Json

 $(document).ready(function() {
   $.post("/controllername/fnname", { }, function (result) {
      alert(result);
   }, "json");
 });