[英]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.