在表单提交之前上传文件

时间:2013-09-25 05:30:55

标签: asp.net-mvc

我有一个申请工作的表单。应该允许用户上传简历,表单上还有一个下拉列表,允许用户从以前上传的简历列表中进行选择。现在我的问题,我需要在没有表单提交的情况下上传新的简历,并使用新上传的简历重新填充下拉列表。现在,用户可以通过选择下拉列表中列出的简历来应用该作业。请帮助吗?

1 个答案:

答案 0 :(得分:0)

您需要使用 Json 才能阻止页面中的完整回发。之后,您必须返回部分视图。

例如;

HTML代码:

<input type="text" id="UserName" name="UserName"/>
<input type="button" onclick="ButonClick()" value="Enter"/>

Javascript代码:

function ButonClick() {
    var data= {
         UserName: $('#UserName').val(),
     };

$.ajax({
    url: "/Home/MyActionResult",
    type: "POST",
    dataType: "json",
    contentType: 'application/json',
    data: JSON.stringify(data)
  });

控制器:

public ActionResult MyActionResult(string UserName , MyModel model)
{
    var stringView = RenderRazorViewToString("_YourPartialView", model);
    return Json(stringView, JsonRequestBehavior.AllowGet);
}

注意:

您需要使用以下代码渲染json的部分视图。

将以下内容添加到您的控制器中。

public string RenderRazorViewToString(string viewName, object model)
{
    ViewData.Model = model;
    using (var sw = new StringWriter())
    {
       var viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, viewName);
       var viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData,   TempData, sw);
       viewResult.View.Render(viewContext, sw);
       viewResult.ViewEngine.ReleaseView(ControllerContext, viewResult.View);
       return sw.GetStringBuilder().ToString();
     }
}