我是一名Java开发人员,刚接触.NET。我正在做一个.NET MVC2项目,我想要有一个局部视图来包装一个小部件。每个JSON对象都有一个JavaScript数据对象,该对象将由模型数据填充。然后,当小部件中的数据发生更改或该数据在另一个小部件中发生更改时,更新此数据的方法将绑定到事件。
代码如下所示:
MyController
virtual public ActionResult DisplaySomeWidget(int id) {
SomeModelView returnData = someDataMapper.getbyid(1);
return View(myview, returnData);
}
myview.ascx
<%@ 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。我在控制器中看到了一些真正简单的方法,而不是在视图中。我认为这是一个基本的问题,但我已经花了几个小时试图让它变得圆滑。
发布于 2011-09-20 21:46:18
在使用剃刀的mvc3中,@Html.Raw(Json.Encode(object))
似乎做到了这一点。
发布于 2012-11-22 04:20:56
我发现这样做很好(视图中的用法):
@Html.HiddenJsonFor(m => m.TrackingTypes)
下面是相应的helper方法扩展类:
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());
}
}
它不是超级柔性化的,但它解决了把它放在哪里的问题(在控制器中还是在视图中?)答案显然是:两者都不是;)
发布于 2016-07-24 14:33:42
可以使用@Html.Raw(Json.Encode( Object ))将View Modal对象转换为JSON
https://stackoverflow.com/questions/3365551
复制相似问题