如何将Json值从控制器传递到视图?

时间:2015-07-04 11:25:22

标签: jquery asp.net json asp.net-mvc asp.net-mvc-4

我有一个具有id stakeHolderName01的下拉列表。我想在点击按钮时获取下拉列表中的值。因为我正在编写代码如下。我是一个学习者,我从一些网站获得此代码。我在控制器中获取值我不知道如何将值从控制器传递到视图。谁能帮我 ?我是MVC的新手

这是我从我的控制器获取值的Javascript代码

function DropDownLoad() {
        {
            alert("");
            $.ajax({
                url: '@Url.Action("Dropdown", "JointCompany")',
                type: "GET",
                success: function (jpoc) {
                    $("stakeHolderName01").append(jpoc.Values);
                }
            });
        }
    }

这是我的控制器和我的类名称jointcompanyviewmodel,其对象是jpoc

 public JsonResult Dropdown(JointCompanyViewModel jpoc)
    {
        jpoc.DropDownValues();
        return Json(jpoc, JsonRequestBehavior.AllowGet);
    }

这是我的模型Jointcompanymodel,在此我从WCF服务对象名称获取数据是Proxy。这里的每件事都很好。

 public List<JointCompanyViewModel> DynamicDropDown()
    {
        var result = Proxy.GetJOCStakeHolder();
        List<JointCompanyViewModel> obj = new JavaScriptSerializer().Deserialize<List<JointCompanyViewModel>>(result);
        return obj;
    }

    public List<SelectListItem> Values { get; set; }

    public List<SelectListItem> DropDownValues()
    {
        var obj = DynamicDropDown();
        List<SelectListItem> lst = new List<SelectListItem>();
        foreach (var items in obj)
        {
            lst.Add(new SelectListItem { Text = items.Name, Value = items.ID });
        }
        Values = lst;
        return Values;
    }

1 个答案:

答案 0 :(得分:1)

我认为这就是你想要的:

在您的控制器操作中,您希望将方法调用jpoc.DropDownValues()的结果存储到变量中,并从控制器操作返回该变量:

public JsonResult Dropdown(JointCompanyViewModel jpoc)
    {
        var result = jpoc.DropDownValues();
        return Json(result, JsonRequestBehavior.AllowGet);
    }

然后在客户端,你的ajax调用将收到你的控制器动作的结果,这是一个对象列表:

function DropDownLoad() {
        {
            alert("");
            $.ajax({
                url: '@Url.Action("Dropdown", "JointCompany")',
                type: "GET",
                success: function (jpoc) {
                    $("#stakeHolderName01").append(jpoc);
                }
            });
        }
    }

请记住,您需要调用javascript函数DropDownLoad()来调用您的ajax调用并让它检索您的控制器操作的结果。

此外,您的ajax调用成功回调中的当前逻辑还不足以更新您的下拉列表。然后,您需要考虑如何执行此操作,这实际上取决于您使用的下拉类型。如果它像<id="stakeHolderName01" select></select>那样你可以这样做:

&#13;
&#13;
var jpoc = [{
  Text: "option 1",
  Value: 1
}, {
  Text: "option 2",
  Value: 2
}]

// put this inside your success callback
for (var i in jpoc) {
  var x = jpoc[i];
  $('#stakeHolderName01').append('<option value="' + x.Value + '">' + x.Text + '</option>');
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="stakeHolderName01"></select>
&#13;
&#13;
&#13;