使用 HTML 时的空引用.隐藏的帮助程序和字符串的部分视图



我正在尝试获取部分视图并返回 html 字符串表示形式,以便我可以将其传递回 ajax 请求并将div 标签设置为 .html((。

在部分的顶部,我添加了隐藏值 @Html.Hidden(( 和 @Html.HiddenFor(( 的 html 属性,以将这些值存储在 html 中。

错误在底部。

我试图弄清楚我的模型是否有任何值为 NULL

将部分转换为 HTML 字符串的代码

public static string RenderViewToString(ControllerContext context, string viewName, object model)
{
if (string.IsNullOrEmpty(viewName))
{
viewName = context.RouteData.GetRequiredString("action");
}
var viewData = new ViewDataDictionary(model);
using (var sw = new StringWriter())
{
var viewResult = ViewEngines.Engines.FindPartialView(context, viewName);
var viewContext = new ViewContext(context, viewResult.View, viewData, new TempDataDictionary(), sw);
viewResult.View.Render(viewContext, sw);
return sw.GetStringBuilder().ToString();
}
}

这是我的部分观点

@using WebPortal.MVC.Utilities.Controls;
@model WebPortal.MVC.Models.Controls.DxGridView.DxGridViewControlModel

@Html.Hidden("dxGridName", Model.Name)
@Html.Hidden("dxGridId", Model.Id)
@Html.Hidden("dxPageSize", Model.Paging.PageSize)
@Html.HiddenFor(x => x.HasFilterRowFunctionality)
@Html.HiddenFor(x => x.HasRefreshFunctionality)
@Html.HiddenFor(x => x.HasHeaderFilterFunctionality)
@Html.HiddenFor(x => x.HasSavedLayoutFunctionality)
@Html.HiddenFor(x => x.HasExportToSpreadsheetFunctionality)
@Html.HiddenFor(x => x.HasExportFunctionality)
@Html.HiddenFor(x => x.OnLoadGridLayoutId)
@Html.HiddenFor(x => x.ConvertDateTimeToLocal)
@Html.HiddenFor(x => x.HeightAdjust)
@Html.HiddenFor(x => x.KeyFieldName)
@Html.HiddenFor(x => x.CurrentUserId)
<div class="dxgridControlContainer">
@(Html.DevExtreme()
.DataGrid<WebPortal.MVC.Models.Controls.DxGridView.DxGridViewControlModel>()
.ID(Model.Id)
.Width("100%")
.Height("700px"))
</div>

我希望这个部分被转换为一个HTML字符串,而没有以下错误。

如果你在部分视图中删除所有的@Html.Hidden((和@Html.HiddenFor((,它就可以完美地工作。

我需要这些值出现在页面上,以便我可以在我的 java 脚本中使用它们。

或者有没有更好的方法将值放置在页面上以便我可以使用它们?似乎执行隐藏或隐藏导致某些错误处理失败。

任何帮助将不胜感激。

错误:

System.NullReferenceException:对象引用未设置为对象的实例。 at System.Web.WebPages.Scope.AspNetRequestScopeStorageProvider.get_RequestScopeInternal(( at System.Web.WebPages.Scope.AspNetRequestScopeStorageProvider.get_CurrentScope(( at System.Web.Mvc.PreApplicationStartCode.<>c.b__1_0(( at System.Web.Mvc.ViewContext.get_Scope(( at System.Web.Mvc.ViewContext.get_UnobtrusiveJavaScriptEnabled(( at System.Web.Mvc.HtmlHelper.GetUnobtrusiveValidationAttributes(String name, ModelMetadata metadata( at System.Web.Mvc.Html.InputExtensions.InputHelper(HtmlHelper htmlHelper, InputType inputType, ModelMetadata metadata, String name, Object value, Boolean useViewData, Boolean isChecked, Boolean setId, Boolean isExplicitValue, String format, IDictionary2 htmlAttributes) at System.Web.Mvc.Html.InputExtensions.HiddenHelper(HtmlHelper htmlHelper, ModelMetadata metadata, Object value, Boolean useViewData, String expression, IDictionary2 htmlAttributes( at System.Web.Mvc.Html.InputExtensions.HiddenFor[TModel,TProperty](HtmlHelper1 htmlHelper, Expression1 表达式, IDictionary2 htmlAttributes) at System.Web.Mvc.Html.InputExtensions.HiddenFor[TModel,TProperty](HtmlHelper1 htmlHelper, Expression1 expression) at ASP._Page_Views_Shared_Controls_GridView__DxGridViewControlPartial_cshtml.Execute() in MyPartialridView_DxGridViewControlPartial.cshtml:line 8 at System.Web.WebPages.WebPageBase.ExecutePageHierarchy() at System.Web.Mvc.WebViewPage.ExecutePageHierarchy() at System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage) at System.Web.Mvc.RazorView.RenderView(ViewContext viewContext, TextWriter writer, Object instance) at System.Web.Mvc.BuildManagerCompiledView.Render(ViewContext viewContext, TextWriter writer) at WebPortal.MVC.Utilities.ViewHelper.RenderViewToString(ControllerContext context, String viewName, Object model) in ViewHelper.cs:line 31 at WebPortal.MVC.Areas.DataVisualization.Controllers.DataVisualizationController.<RenderPivotGridDrillDownPartialView>d__2.MoveNext() in Controller.cs:line 71 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Web.Mvc.Async.TaskAsyncActionDescriptor.EndExecute(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass8_0.<BeginInvokeAsynchronousActionMethod>b__1(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult1.CallEndDelegate(IAsyncResult asyncResult( at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase1.End() at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass11_0.<InvokeActionMethodFilterAsynchronouslyRecursive>b__0() at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass11_2.<InvokeActionMethodFilterAsynchronouslyRecursive>b__2() at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass11_2.<InvokeActionMethodFilterAsynchronouslyRecursive>b__2() at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass7_0.<BeginInvokeActionMethodWithFilters>b__1(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult1.CallEndDelegate(IAsyncResult asyncResult( at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase'1.End(( at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult( at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass3_6.b__4(( at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass3_1.b__1(IAsyncResult asyncResult(

尝试在viewResult.View.Render(viewContext, sw);后调用viewResult.ViewEngine.ReleaseView(ControllerContext, viewResult.View);。 另外,您能否调试并查看哪个属性会引发空错误?

最新更新