我有一个上传控制器的视图,它触发了这个ActionResult:
[HttpPost]
public ActionResult ProcessSubmitUpload(HttpPostedFileBase attachments, Guid? idDocument)
{
//Validations
var xmlDocument = XDocument.Load(attachments.InputStream);
DocumentCommonHelper.SendFile(xmlDocument);
}
SendFile方法:
public static void SendCte(XDocument xmlDocument)
{
var client = new WsSoapClient();
client.InsertXML(xmlDocument);
}
如果somethig出错,webservice会返回SoapException,例如: “IDDocument不存在”等等。
但是在MVC中我调试如果在InsertXml方法中出现问题我无法捕获它,调试导航就停止并抛出上传文件错误。
我想在我的操作中捕获InsertXML方法的返回消息,并将其返回到我的视图中。就像一个'警报'弹出窗口。 我怎么能这样做?
答案 0 :(得分:3)
您可以将错误消息返回到ModelState对象中的视图。视图可以使用ValidationSummary助手显示它:
[HttpPost]
public ActionResult ProcessSubmitUpload(HttpPostedFileBase attachments, Guid? idDocument)
{
//Validations
var xmlDocument = XDocument.Load(attachments.InputStream);
try
{
DocumentCommonHelper.SendFile(xmlDocument);
}
catch(Exception ex)
{
ModelState.AddModelError("ProcessSubmitUpload", ex.Message);
return View(new MyViewModel())
}
}
查看:
@using(Html.BeginForm("ProcessSubmitUpload", "MyController", FormMethod.Post))
{
@Html.ValidationSummary()
... etc.
}
答案 1 :(得分:2)
您可以使用SendFile
块包裹try..catch
方法调用,并使用catch
部分填充返回结果以及有关错误的相应信息。