提交表单后,我如何停留在页面上并仅返回字符串响应?我可以将ajax表单提交与文件一起使用吗?

时间:2018-09-12 05:47:11

标签: c# asp.net asp.net-mvc

我目前有一个包含普通文本输入和文件(上传)输入的表格。

所以我的viewModel的结构大致如下:

public string PROD
public string WH
public HttpPostedFileBase ImageFile
public HttpPostedFileBase ImageFile

我的视图的构建方式如下:

@model ISE.Solution2.ViewModel.INV_Master 
@using (Html.BeginForm(null, null, FormMethod.Post, new { id = "product-master-form", enctype = "multipart/form-data" }))
{
      @Html.LabelFor(model => model.PROD, htmlAttributes: new { @class = "control-label col-sm-3 col-form-label" })
     <div class="col-sm-9">
      @Html.DropDownListFor(model => model.PROD, Enumerable.Empty<SelectListItem>(), new { @id = "product-code", @class = "form-control" })
     </div>

     <!--more markup written here -->

}

在我提交表单之前,我的页面如下所示: enter image description here

因此表单最初是由 控制器中的public ActionResult MasterCl(int? id){}。 提交表单后,当前会转到控制器中的另一种方法:

[HttpPost] 
public async Task<ActionResult> MasterCl(INV_Master masterViewModel){} 

所以上面的方法只是return View()

这意味着我回到表单所在的页面,大概该字段中的所有填充字段都保持不变。但是我的页面看起来像这样:

enter image description here

我的记录已正确保存到数据库中,但是下拉字段的状态丢失,因为它们是用javascript创建的。它们不是普通的html <select>元素。

我想防止这种情况的发生。因为在将表单数据发送到服务器端后,可能已经完成了服务器端验证,并且表单中可能存在错误,因此我想提示某种通知。我在想用户将返回到已填写的表单,并且我显示了一个JavaScript alert,指出未正确填写表单的哪一部分。

我在这一部分迷路了。我在想是否可以使用Ajax.BeginForm来将数据发布到控制器。如果这样做,那么我仍将停留在页面中,并且POST的响应由所提供的JSON字符串确定,因此我将能够使用js来显示该内容的警报。问题是我不确定我是否可以使用AJAX。

有些页面使我认为可以使用ajax来发布数据... link1 link2

0 个答案:

没有答案