C# 使用Html.BeginForm和ajax调用相同的操作冲突?

C# 使用Html.BeginForm和ajax调用相同的操作冲突?,c#,ajax,asp.net-mvc,asp.net-ajax,C#,Ajax,Asp.net Mvc,Asp.net Ajax,当我尝试添加Ajax以将另一个数据传递到我的动作控制器时,我的模型参数受到影响,该值为null,而我的Ajax参数有一个值我不认为这是因为我使用的是Html.beginform('index','payment'),我使用的是Ajaxurl:'@url.Action('index',payment'),,具有相同的操作结果。 你可以看到下面的参考资料 @using (Html.BeginForm("index", "payable", FormMethod

当我尝试添加
Ajax
以将另一个数据传递到我的动作控制器时,我的模型参数受到影响,该值为null,而我的
Ajax
参数有一个值
我不认为这是因为我使用的是
Html.beginform('index','payment')
,我使用的是
Ajax
url:'@url.Action('index',payment'),
,具有相同的
操作结果。

你可以看到下面的参考资料

@using (Html.BeginForm("index", "payable", FormMethod.Post, new { enctype = "multipart/form-data" }))<div class="col-md-2">
        <div class="form-group">
            @Html.LabelFor(x => x.Amount, new { @class = "form-label" })
            @Html.TextBoxFor(x => x.Amount, new { @class = "form-control" })
        </div>
    </div>

    <div class="col-md-2">
        <div class="form-group">
            @Html.LabelFor(x => x.ImagePath, new { @class = "form-label" })
            <input type="file" name="file" id="files" />
        </div>
    </div>

    <div class="col-md-2">
        <div class="form-group">
            <button type="submit" id="btnUpload" class="btn btn-primary btn-sm" onclick="saveSelected()"><i class="fas fa-save"></i> &nbsp;Submit Payment</button>
        </div>
    </div>{
我的控制器

 public ActionResult Index(PayableFormModel model, HttpPostedFileBase file, int[] ids) 
    {
        return View();
    }
  • Beginform和ajax不能同时使用,即使您添加了 onclick函数。因此ajax无法工作,所有数据都已提交 按形式。若要提交模型和任何其他数据,请将它们全部放入表单中,或者只使用ajax

  • 上载文件时,模型无法直接获取文件的名称或路径。您应该将文件存储到一个文件夹或目录中,然后将此路径分配给模型的imagepath。(Examle代码已被清除)

  • 在索引页中,{}应该跟在using()后面,否则它将报告错误

     public ActionResult Index(PayableFormModel model,HttpPostedFileBase file,int[] ids)
     {
         string filepath = Server.MapPath("~/image/");
         Directory.CreateDirectory(filepath);
         file.SaveAs(Path.Combine(filepath, file.FileName));
         model.ImagePath = filepath + file.FileName ;
    
         return View();
     }
    

Bruce Zhang感谢您提醒我们Html.Beginform和ajax不能同时使用。我尝试序列化我的表单以获取其中的所有数据。但是,我的ID为null,因为此参数不在表单中。您对如何在表单外传递其他数据有何建议?您可以参考以下答案:
 public ActionResult Index(PayableFormModel model,HttpPostedFileBase file,int[] ids)
 {
     string filepath = Server.MapPath("~/image/");
     Directory.CreateDirectory(filepath);
     file.SaveAs(Path.Combine(filepath, file.FileName));
     model.ImagePath = filepath + file.FileName ;

     return View();
 }