我用浏览按钮和上传按钮创建了一个MVC项目。当用户单击“浏览”并选择文件并单击“上载”时,文件内容必须显示在Textarea中。默认情况下,当我加载页面时,我在textarea中显示默认文本。一旦用户上传文件,我就试图在该textarea中显示内容。
问题是当我尝试重置内容时,textarea没有重置。任何帮助都非常感谢。
查看: -
@model DigitalUnderwritingFacade.Models.DigitalUnderwritingModel
<h2>DigitalUnderwriting</h2>
<div>
@using (Html.BeginForm())
{
<table style="vertical-align:middle">
<tr>
<td>Upload a json file : <input type="file" id="btnbrowse" name="browse" value="Browse"></td>
</tr>
<tr>
<td><input type="button" id="btnfileUpload" name="btnfileUpload" value="Upload" /></td>
<td><div id="validateSelectedFile" class="warrningMessage">Please browse a valid json file</div></td>
</tr>
<tr>
<td>@Html.TextAreaFor(model => model.JsonText, new { @class = "form-control", cols = "120", rows = "45", @id = "textarea" })</td>
</tr>
<tr>
<td><input type="submit" id="Savebtn" value="Save"></td>
</tr>
</table>
}
</div>
<script src="~/Scripts/jquery-1.9.1.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript">
$("#btnfileUpload").click(function () {
var formData = new FormData();
var totalFiles = document.getElementById("btnbrowse").files.length;
var browsedFile = document.getElementById("btnbrowse").files[0];
var fileextension = browsedFile.name.split('.').pop();
if (totalFiles == 0)
$("#validateSelectedFile").show()
if ((totalFiles != 0)) {
if (fileextension == 'json') {
formData.append("FileUpload", browsedFile);
$.ajax({
type: "POST",
url: '/DigitalUnderwriting/Upload',
data: formData,
contentType: false,
processData: false,
success: function (result) { }
});
}
else {
alert("Please select a valid json file.");
}
}
});
</script>
Controller:-
DigitalUnderwritingModel model = new DigitalUnderwritingModel();
private string InputJsonPath = System.Configuration.ConfigurationManager.AppSettings["DefaultJson"].ToString();
private string ResponseJsonPath = System.Configuration.ConfigurationManager.AppSettings["JsonResponsesPath"].ToString();
//
// GET: /DigitalUnderwriting/
public ActionResult Index()
{
StreamReader reader = new StreamReader(InputJsonPath);
if (TempData["ResponseJson"] == null)
{
model.JsonText = reader.ReadToEnd();
}
else
{
model.JsonText = TempData["ResponseJson"].ToString();
TempData["ResponseJson"] = null;
}
return View(model);
}
[HttpPost]
public ActionResult Upload()
{
ModelState.Remove("JsonText");
var streamfile = new StreamReader(Request.Files[0].InputStream);
var streamline = string.Empty;
while((streamline = streamfile.ReadLine()) != null)
{
model.JsonText += streamline;
}
TempData["ResponseJson"] = model.JsonText;
return RedirectToAction("Index");
}
Model:-
[DataType(DataType.MultilineText)]
public string JsonText { get; set; }
答案 0 :(得分:1)
试试这个,我的朋友。我认为你不需要为Textarea设置id。
$("#btnfileUpload").click(function () {
var formData = new FormData();
var totalFiles = document.getElementById("btnbrowse").files.length;
var browsedFile = document.getElementById("btnbrowse").files[0];
var fileextension = browsedFile.name.split('.').pop();
if (totalFiles == 0)
$("#validateSelectedFile").show()
else{
$('#JsonText').html(browsedFile.name); //set name file
if (fileextension == 'json') {
formData.append("FileUpload", browsedFile);
$.ajax({
type: "POST",
url: '/DigitalUnderwriting/Upload',
data: formData,
contentType: false,
processData: false,
success: function (result) { }
});
}
else {
alert("Please select a valid json file.");
}
}
});
[HttpPost]
public ActionResult Upload()
{
TempData["ResponseJson"] = model.JsonText;
ModelState.Remove("JsonText");
var streamfile = new StreamReader(Request.Files[0].InputStream);
var streamline = string.Empty;
while((streamline = streamfile.ReadLine()) != null)
{
model.JsonText += streamline;
}
return RedirectToAction("Index");
}