我在ASP.Net MVC5中有一个创建表单。当页面加载时,有一些数据要从DB中提取,并且在按钮提交点击时,应该调用创建控制器来保存数据。问题是当页面加载时它总是转到HTTP POST方法而不是get方法。(我知道很少有这样的问题已经提出,但这里没有任何帮助)如果我重命名HTTP POST方法名称,那么它正确调用get方法。有两个同名的动作,它总是调用HTTP POST方法,而页面加载和按钮点击不会调用任何动作方法。
这是ASP.Net MVC的Sharepoint高信任提供程序应用程序,因此我的URL在浏览时会有所不同。
我的视图和控制器看起来像这样。这里有什么不对吗?
@using (Html.BeginForm("Create", "Test"))
{
<div class="form-horizontal">
<div class="form-group">
@Html.LabelFor(model => model.Title, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Title)
@Html.ValidationMessageFor(model => model.Title)
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" class="btn btn-default" />
</div>
</div>
</div>
}
public ActionResult Create()
{
MyModel model = new MyModel();
string usersid = ((System.Security.Principal.WindowsIdentity)(HttpContext.User.Identity)).User.Value;
//Bind Board details
eDataAccess mda = new eDataAccess();
ExtDataTable committees = mda.GetList(usersid, "--url--");
GetAllUserList(model.comitteeslist.FirstOrDefault().Value, usersid);
// few logic
return View(model);
}
[HttpPost]
public ActionResult Create(MyModel model)
{
string usersid = ((System.Security.Principal.WindowsIdentity)(HttpContext.User.Identity)).User.Value;
// few logic
int id = Utilities.Create(model.Title, usersid, 2057, 6297,
model.desc, false, model.start, model.end);
return View();
}
答案 0 :(得分:1)
花了几个小时后,我找到了解决问题的方法。我已经更改了主页加载操作方法,只是为了重定向到另一个操作方法。第二个动作具有实际逻辑以及get和post方法。这样它工作正常。
我仍然没有回答为什么它会这样做。然而,这个解决方案有助于并正常工作。
public ActionResult Index()
{
return RedirectToAction("Create");
}
public ActionResult Create()
{
MyModel model = new MyModel();
string usersid = ((System.Security.Principal.WindowsIdentity)(HttpContext.User.Identity)).User.Value;
//Bind Board details
eDataAccess mda = new eDataAccess();
ExtDataTable committees = mda.GetList(usersid, "--url--");
GetAllUserList(model.comitteeslist.FirstOrDefault().Value, usersid);
// few logic
return View(model);
}
[HttpPost]
public ActionResult Create(MyModel model)
{
string usersid = ((System.Security.Principal.WindowsIdentity)(HttpContext.User.Identity)).User.Value;
// few logic
int id = Utilities.Create(model.Title, usersid, 2057, 6297,
model.desc, false, model.start, model.end);
return View();
}