Ibr*_*mer 0 .net javascript ajax asp.net-mvc asp.net-mvc-4
我是ASP.NET MVC的新手,我一直在寻找解决此问题的解决方案,但找不到任何合适的解决方案。我在stachoverflow上找到了一些解决方案,但没有任何解决方法。以下是一些链接:
可以从Javascript文件访问MVC ViewBag对象吗?
MVC 3-将ViewBag内容分配给Javascript字符串
这是我对服务器的ajax调用:
var xhr = new XMLHttpRequest();
xhr.open('POST', '/Prize/UploadPassport');
xhr.send(formdata);
xhr.onreadystatechange = function () {
if (xhr.readyState == 4 && xhr.status == 200) {
var data = JSON.parse(xhr.responseText)
if (data.nationality != "") {
$('#PassportData tbody').append('<tr><td data-title="@Web.Resources.MyResources.PassportNationality">' + data.nationality + '</td><td data-title="@Web.Resources.MyResources.PassportName">' + data.passportName + '</td><td><a><i id="viewApp_' + data.passportID + '" class="fa fa-search fa-lg" onclick="ViewPassport(' + data.passportID + ');"> <iframe id="img_' + data.passportID + '" class="costumeiframe"></iframe></i></a></td></tr>');
}
else {
//var errorMsg = data.errorMsg;
ShowDataValidationMessage("@ViewBag.FileError"); //here i'm getting an empty string
}
}
}
Run Code Online (Sandbox Code Playgroud)
在服务器端操作中,我根据一些条件设置了ViewBag.FileError,这是:
public ActionResult UploadPassport(HttpPostedFileBase FileUpload, string PassportCopyNationality)
{
if (Condition)
{
//Database access
}
else
{
if (isFileAlreadyExist)
{
ViewBag.FileError = Web.Resources.MyResources.PassportAttachmentValidationForFile;
}
else if (file.ContentLength > 3145728 || !isFileTypeLegal)
{
ViewBag.FileError = Web.Resources.MyResources.FileError;
}
return Json(new { nationality = "", passportName = "", passportID = "" });
}
}
catch (IOException io)
{
return Json("File not uploaded");
}
}
Run Code Online (Sandbox Code Playgroud)
我得到一个空字符串的问题
小智 5
首先,@ViewBag.FileError(在脚本内部)是在视图发送到客户端之前在服务器上解析的剃刀代码,因此,除非您将其包含ViewBag.FileError = someValue在生成该视图的GET方法中,否则它将始终等于null。
其次,您的UploadPassport()方法返回的JsonResult不是视图,因此ViewBag甚至不存在。您可以通过将值添加到中来解决此问题JsonResult,例如
return Json(new { fileError = someValue, nationality = "", passportName = "", passportID = "" });
Run Code Online (Sandbox Code Playgroud)
然后在脚本中访问它
ShowDataValidationMessage("data.fileError");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4448 次 |
| 最近记录: |