在mvc中的json actionresult中的viewdata

时间:2010-12-28 06:34:04

标签: asp.net-mvc

在mvc工作

在这个Json结果中,我正在加载一些下拉列表,它工作得很好..如果我选择一些值描述值应该显示在文本框中....这里ViewData [“Description”] = AttributesLibrary.Description;在这我得到描述值,但我无法显示它......

 public JsonResult PopulateGradeScaleSetUp(string trackId)
    {

        List<GradeDivisionValues> GradeDivisionValuesList = new List<GradeDivisionValues>();
        SelectList fieldIds = new SelectList(new List<Gradescale> { });
        AttributesLibrary AttributesLibrary = new AttributesLibrary();

        try
        {
            if (!string.IsNullOrEmpty(trackId))
            {
                string gradescaleID;
                Context.SetPrivilegeContext(GrowthDataConstant.ViewAttributeLibrary);
                AttributesLibrary = GrowthMasterDataProxy.GetAttributeByAttributeId(trackId);
                gradescaleID = AttributesLibrary.AttributePropertyDetails.GradeScaleDetails.Identifier;
                Context.SetPrivilegeContext(GrowthDataConstant.ViewGradeScale);
                Gradescale gradeScale = new Gradescale();
                gradeScale = GrowthMasterDataProxy.GetGradeScaleById(gradescaleID);
                Dictionary<string, GradeDivisionValues> GradeDivisionValuesDic = gradeScale.GradeDivisionValues;
                if (GradeDivisionValuesDic != null && GradeDivisionValuesDic.Count > 0)
                {
                    GradeDivisionValuesList = GradeDivisionValuesDic.Values.ToList();

                }
                fieldIds = new SelectList((IEnumerable)GradeDivisionValuesList, "NumericalValue", "TextValue");
                ViewData["Description"] = AttributesLibrary.Description;
            }
            return Json(fieldIds, JsonRequestBehavior.AllowGet);


        }


        catch (ArgumentException argumentException)
        {
            ExceptionService.HandleException(argumentException, _defaultPolicy);
            return Json("Error", JsonRequestBehavior.AllowGet);
        }


    }

这是我的观点:

 <%= Html.TextBox("Description", (string)ViewData["Description"])%>

1 个答案:

答案 0 :(得分:0)

您的控制器操作返回JSON,这让我相信您正在使用AJAX调用它。要更新文本框的值,您需要将其包含在JSON结果中,而不是使用ViewData。例如:

return Json(new
{
    fieldIds = fieldIds,
    description = AttributesLibrary.Description
}, JsonRequestBehavior.AllowGet);

现在剩下的就是在AJAX成功处理程序中使用此值。假设您正在使用jquery,它可能如下所示:

var url = '<%= Url.Action("PopulateGradeScaleSetUp") %>';
$.getJSON(url, { trackId: 123 }, function(result) {
    $('#Description').val(result.description); 
});

和文本框定义简单:

<%= Html.TextBox("Description") %>