首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在JSON MVC中将视图模型转换为ASP.NET对象?

如何在JSON MVC中将视图模型转换为ASP.NET对象?
EN

Stack Overflow用户
提问于 2010-07-30 01:57:22
回答 5查看 223.7K关注 0票数 160

我是一名Java开发人员,刚接触.NET。我正在做一个.NET MVC2项目,我想要有一个局部视图来包装一个小部件。每个JSON对象都有一个JavaScript数据对象,该对象将由模型数据填充。然后,当小部件中的数据发生更改或该数据在另一个小部件中发生更改时,更新此数据的方法将绑定到事件。

代码如下所示:

MyController

代码语言:javascript
复制
virtual public ActionResult DisplaySomeWidget(int id) {
  SomeModelView returnData = someDataMapper.getbyid(1);

  return View(myview, returnData);
}

myview.ascx

代码语言:javascript
复制
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<SomeModelView>" %>

<script type="text/javascript">
  //creates base widget object;
  var thisWidgetName = new Widget();

  thisWidgetName.updateTable = function() {
    //  UpdatesData
  };
  $(document).ready(function () {
    thisWidgetName.data = <% converttoJSON(model) %>
    $(document).bind('DATA_CHANGED', thisWidgetName.updateTable());
  });
</script>

<div><%:model.name%></div>

我不知道的是如何将数据作为SomeModelView发送,然后能够使用它来填充小部件以及将其转换为JSON。我在控制器中看到了一些真正简单的方法,而不是在视图中。我认为这是一个基本的问题,但我已经花了几个小时试图让它变得圆滑。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-09-20 21:46:18

在使用剃刀的mvc3中,@Html.Raw(Json.Encode(object))似乎做到了这一点。

票数 358
EN

Stack Overflow用户

发布于 2012-11-22 04:20:56

我发现这样做很好(视图中的用法):

代码语言:javascript
复制
    @Html.HiddenJsonFor(m => m.TrackingTypes)

下面是相应的helper方法扩展类:

代码语言:javascript
复制
public static class DataHelpers
{
    public static MvcHtmlString HiddenJsonFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression)
    {
        return HiddenJsonFor(htmlHelper, expression, (IDictionary<string, object>) null);
    }

    public static MvcHtmlString HiddenJsonFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, object htmlAttributes)
    {
        return HiddenJsonFor(htmlHelper, expression, HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes));
    }

    public static MvcHtmlString HiddenJsonFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, IDictionary<string, object> htmlAttributes)
    {
        var name = ExpressionHelper.GetExpressionText(expression);
        var metadata = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData);

        var tagBuilder = new TagBuilder("input");
        tagBuilder.MergeAttributes(htmlAttributes);
        tagBuilder.MergeAttribute("name", name);
        tagBuilder.MergeAttribute("type", "hidden");

        var json = JsonConvert.SerializeObject(metadata.Model);

        tagBuilder.MergeAttribute("value", json);

        return MvcHtmlString.Create(tagBuilder.ToString());
    }
}

它不是超级柔性化的,但它解决了把它放在哪里的问题(在控制器中还是在视图中?)答案显然是:两者都不是;)

票数 18
EN

Stack Overflow用户

发布于 2016-07-24 14:33:42

可以使用@Html.Raw(Json.Encode( Object ))将View Modal对象转换为JSON

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3365551

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档