只有在传入exception.Message时,ValidationSummary才会显示它。
如果我传入exception,它不会显示任何内容。
但AddModelError接受异常类型。
如何显示Exception
cshtml:
@model ControlTower2.Models.ViewModelUploadRawMaterial
@{
ViewBag.Title = "UploadRawMaterialSupplierData";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>UploadRawMaterialSupplierData</h2>
<div>
@using (Html.BeginForm("UploadRawMaterialSupplierData", "PurchaseOrder", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<table>
<tr>
<td>
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
</td>
</tr>
<tr>
<td>
@Html.TextBoxFor(model => model.uploadFile, "", new { type = "file" })
</td>
<td>
@Html.ValidationMessageFor(model => model.uploadFile, null, new { @class = "text-danger" })
</td>
</tr>
<tr>
<td>
<input type="submit" value="Upload" />
</td>
</tr>
</table>
}
</div>ActionResult:
[HttpPost]
public ActionResult UploadRawMaterialSupplierData(ViewModelUploadRawMaterial viewModelUploadRawMaterial)
{
try
{
throw new Exception("test UploadRawMaterialSupplierData error!");
}
catch (Exception exception)
{
ModelState.AddModelError("", exception);
return View(viewModelUploadRawMaterial);
}
}查看模型:
public class ViewModelUploadRawMaterial
{
[Required(ErrorMessageResourceType = typeof(Resources.UploadPurchaseOrder), ErrorMessageResourceName = "errorUploadFileRequired")]
public HttpPostedFileBase uploadFile { get; set; }
public List<UploadExcelError> UploadExcelErrors { get; set; }
}发布于 2018-11-23 19:01:19
ModelState.AddModelError()接受string值。它主要用于在屏幕上显示友好的错误,让用户看到出错的地方。
你可以分析异常并添加一个你自己设计的额外的“内部代码”,用户可以引用给你,以帮助你调查任何问题?
例如,很抱歉,完成您的操作时出现问题错误:1234(其中1234是您对某些内容的内部引用)。
或者,如果您想输出整个异常而不考虑UX,您可以通过Nuget安装Newtonsoft JSON.NET包,并将异常序列化为传递该异常的字符串,如下所示:
[HttpPost]
public ActionResult UploadRawMaterialSupplierData(ViewModelUploadRawMaterial viewModelUploadRawMaterial)
{
try
{
throw new Exception("test UploadRawMaterialSupplierData error!");
}
catch (Exception exception)
{
string jsonException = JsonConvert.SerializeObject(exception);
ModelState.AddModelError("", jsonException);
return View(viewModelUploadRawMaterial);
}
}https://stackoverflow.com/questions/53443731
复制相似问题