简体   繁体   English

使用onclick javascript函数进行验证时,Asp.Net MVC提交按钮未将值发布到Controller中的方法中

[英]Asp.Net MVC submit button doesn' t post values to my method in Controller while using onclick javascript function for validation

When I am saving my data for the first time (when clicked on save button of my view) then I am getting value of submitButton variable in my controller action. 当我第一次保存数据时(单击视图的保存按钮时),那么我在控制器操作中获取了submitButton变量的值。 But when I am editing my view and then click on save then I am getting null value in submitButton variable in my controller action. 但是,当我编辑视图然后单击保存时,我在控制器操作中的submitButton变量中得到了null值。

My View Model 我的视图模型

public class TermiViewModel : ViewModelBase
{
  public long Id { get; set; }
  public string Name { get; set; }
}

My View 我的观点

@model TermiViewModel

@using (Html.BeginForm("MyActionMethod", "MyController", FormMethod.Post))
{
  @Html.HiddenFor(model => model.Id)

  <div>
    @Html.LabelFor(model => model.Name)
    @Html.EditorFor(model => model.Name)
  </div>

  <button name="submitButton" value="Save" type="submit" 
    onclick="return JavaScriptFunction();">Save</button> 

  <button name="submitButton" value="Cancel" type="submit" 
    onclick="return JavaScriptFunction();">Cancel</button> 
}

Below is the Javascript I am using in my view. 以下是我认为的Javascript。

<script language="javascript" type="text/javascript">
  function JavaScriptFunction() {
    return true;
  }
</script>

Below is my Controller class. 下面是我的Controller类。

public class MyController : CoreMvcController
{
  private readonly ITermiRepositoryService _termiRepository;
  public MyController(ITermiRepositoryService termiRepository)
  {
    _termiRepository = termiRepository;
  }
}

Below is my action Method where I am getting values from my view. 以下是我从我的观点中获取价值的行动方法。

[HttpPost]
public ActionResult MyActionMethod(TermiViewModel termiViewModel, string submitButton)
{
  try
  {
    voucherViewModel =_termiRepository.Save(termiViewModel);
    switch (submitButton)
    {
      case "Cancel":
        return RedirectToAction("Edit",termiViewModel.Id);
      default:
        return RedirectToAction("Index");
    }
  }
  catch (Exception exception)
  {
  }
  return RedirectToAction("Index");
}

In my above Controller method I get the null value for my submitButton variable while editing my view. 在上面的Controller方法中,在编辑视图时,我的submitButton变量的null I don't understand why I am getting null value because while creating for the first time, I am getting values of submitButton from the submit button. 我不明白为什么我得到null值,因为在第一次创建时,我从提交按钮中获得了submitButton值。

Thanks for any help! 谢谢你的帮助!

For the solution, I need to change following classes: 对于解决方案,我需要更改以下类:

My View Model: 我的视图模型:

// A new property "SaveButtonValue" added to my view model.

public class TermiViewModel : ViewModelBase
{    

  public long Id { get; set; }

  public string Name { get; set; }

  public string SaveButtonValue { get; set; }

}

My View: 我的观点:

// Added a hidden field for "SaveButtonValue" and passing this keyword in
// Javascript function for onclick of submit button.

@model TermiViewModel

@using (Html.BeginForm("MyActionMethod", "MyController", FormMethod.Post))  
{

  @Html.HiddenFor(model => model.Id)

  @Html.HiddenFor(model => model.SaveButtonValue)

  <div>

    @Html.LabelFor(model => model.Name)

    @Html.EditorFor(model => model.Name)

  </div>


  <button name="submitButton" value="Save" type="submit" 
   onclick="return JavaScriptFunction(this);">Save</button> 

  <button name="submitButton" value="Cancel" type="submit" 
   onclick="return JavaScriptFunction(this);">Cancel</button> 
}

Javascript: Javascript:

// Populating my property "SaveButtonValue" through javascript

<script language="javascript" type="text/javascript">

  function JavaScriptFunction(submitButton)
  {

      if (objButton) {
          $('#SaveButtonValue').val(submitButton.value);
      }

      return true;
  }
</script>

My action method: 我的动作方法:

[HttpPost]

public ActionResult MyActionMethod(TermiViewModel termiViewModel)
{

  try
  {
    voucherViewModel =_termiRepository.Save(termiViewModel);

    switch (termiViewModel.SaveButtonValue)
    {
      case "Cancel":
        return RedirectToAction("Edit",termiViewModel.Id);

      default:
        return RedirectToAction("Index");

    }

  }

  catch (Exception exception)
  {

  }

  return RedirectToAction("Index");

}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 表单不在ASP.NET MVC中提交值 - Form doesn't submit values in ASP.NET MVC 如何使用JavaScript而不是提交按钮发布ASP.NET MVC Ajax表单 - How to post ASP.NET MVC Ajax form using JavaScript rather than submit button ASP.NET MVC和Javascript-提交按钮提交表单,onclick @ URL.Action不触发 - ASP.NET MVC and Javascript - Submit button submitting form, onclick @URL.Action not firing javascript方法发布-如何调用asp.net mvc操作onClick? - javascript method post - how to call asp.net mvc action onClick? ASP.Net MVC提交表单找不到方法 - 不能使用香草表格? - ASP.Net MVC Submit Form Doesn't Find Method - Can't Use Vanilla Form? 如何使用模式中的提交按钮提交我的表单? (ASP.NET MVC) - How can i submit my form using the submit button in a modal? (ASP.NET MVC) 如果使用JavaScript在ASP.NET中页面验证失败,如何禁用“提交”按钮 - How to disable the submit button if page validation fails in ASP.NET using javascript 使用AJAX将JavaScript数组发布到asp.net MVC控制器 - Post JavaScript array with AJAX to asp.net MVC controller ASP.NET MVC 5从Javascript Error调用控制器方法 - ASP.NET MVC 5 calling controller method from Javascript Error 使用Javascript在ASP.NET MVC控制器操作上通过POST下载文件(HttpPost操作) - Download a File by POST (HttpPost action) on ASP.NET MVC controller action using Javascript
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM