首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何显示传入AddModelError的异常(类型)?

如何显示传入AddModelError的异常(类型)?
EN

Stack Overflow用户
提问于 2018-11-23 17:19:09
回答 1查看 129关注 0票数 0

只有在传入exception.Message时,ValidationSummary才会显示它。

如果我传入exception,它不会显示任何内容。

AddModelError接受异常类型。

如何显示Exception

cshtml:

代码语言:javascript
复制
@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:

代码语言:javascript
复制
[HttpPost]
public ActionResult UploadRawMaterialSupplierData(ViewModelUploadRawMaterial viewModelUploadRawMaterial)
{
    try
    {
        throw new Exception("test UploadRawMaterialSupplierData error!");
    }
    catch (Exception exception)
    {
        ModelState.AddModelError("", exception);
        return View(viewModelUploadRawMaterial);
    }
}

查看模型:

代码语言:javascript
复制
public class ViewModelUploadRawMaterial
{
    [Required(ErrorMessageResourceType = typeof(Resources.UploadPurchaseOrder), ErrorMessageResourceName = "errorUploadFileRequired")]
    public HttpPostedFileBase uploadFile { get; set; }

    public List<UploadExcelError> UploadExcelErrors { get; set; }
}
EN

回答 1

Stack Overflow用户

发布于 2018-11-23 19:01:19

ModelState.AddModelError()接受string值。它主要用于在屏幕上显示友好的错误,让用户看到出错的地方。

你可以分析异常并添加一个你自己设计的额外的“内部代码”,用户可以引用给你,以帮助你调查任何问题?

例如,很抱歉,完成您的操作时出现问题错误:1234(其中1234是您对某些内容的内部引用)。

或者,如果您想输出整个异常而不考虑UX,您可以通过Nuget安装Newtonsoft JSON.NET包,并将异常序列化为传递该异常的字符串,如下所示:

代码语言:javascript
复制
[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);
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53443731

复制
相关文章

相似问题

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