【问题标题】:In MVC 4 my textarea is not resetting from default value在 MVC 4 中,我的 textarea 没有从默认值重置
【发布时间】:2017-05-25 02:15:22
【问题描述】:

我创建了一个带有浏览按钮和上传按钮的 MVC 项目。当用户单击浏览并选择文件并单击上传时,文件内容必须显示在 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; }

【问题讨论】:

    标签: javascript c# model-view-controller


    【解决方案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");
            }  
    

    【讨论】:

    • 感谢您的回复。但我需要 textarea ID 来获取 textarea 中的当前值。在这里,我试图在 textarea 中显示一个默认 json,当用户上传文件时,我试图用默认值覆盖该文件内容..
    • @user1155576:哦,你可以很简单地获得textarea的值。 $('#JsonText').val()。无需为其设置新 id :))
    • 每当我加载页面时,我都会在 textarea 中显示默认文本。在上传按钮中单击如何清除 textarea 内容并使用文件内容更新它?
    • 在我的控制器 HTTPPOST ActionResult 方法中,我正在获取文件内容并重定向到索引方法以将值分配给我的模型属性 (JsonText)。我在视图中使用的这个值。它仍然显示旧值..
    • @user1155576:我的朋友,在调用 ajax 之后还是什么时候?
    猜你喜欢
    • 2013-03-01
    • 1970-01-01
    • 2013-01-22
    • 2013-05-15
    • 1970-01-01
    • 2013-03-31
    • 2014-03-10
    • 1970-01-01
    • 2018-02-17
    相关资源
    最近更新 更多