关于mvc3中使用post传值时[HttpPost]方法进不去的问题

wg5945 2012-10-17 11:28:14
使用HtmlHelper.post方法

<% Html.BeginForm("AddRelease", "User", FormMethod.Post); %>
<ul>
<li>用户名: <%= Html.TextBox("UserName") %></li>
<li>密码: <%= Html.TextBox("Password") %></li>
</ul>
<% Html.EndForm(); %>
<input type="submit" value="添加" />


这时在control中
[HttpPost]
public ActionResult AAA(Model model)
{
}
这个方法就进不去了。

在这个方法中还有一些处理,请问下有没有什么解决方法?
...全文
829 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
hhuleaves 2012-10-19
  • 打赏
  • 举报
回复
MVC框架的问题,设置了参数,HTTPPOST就无法进入了。

可以通过RedirectToAction再跳转,但是只支持get方式,不支持POST

可以参考下面这篇文章

http://stackoverflow.com/questions/129335/how-do-you-redirecttoaction-using-post-instead-of-get
zhujiazhi 2012-10-17
  • 打赏
  • 举报
回复
看看页面最后生成的html源代码post到什么地方去的,

<form action=".../AAA" method="post">
......
</form>
wg5945 2012-10-17
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

mark
[/Quote]

什么意思?

能不能稍微具体一些?
wg5945 2012-10-17
  • 打赏
  • 举报
回复

<% Html.BeginForm("AddRelease", "User", FormMethod.Post); %>
改成
<% Html.BeginForm(null, null, FormMethod.Post); %>

是可以进[HttpPost]方法的
wg5945 2012-10-17
  • 打赏
  • 举报
回复
AddRelease是目标页面的action

AAA是源页面的action

我想要进源页面的[HttpPost]方法
白云任去留 2012-10-17
  • 打赏
  • 举报
回复
Html.BeginForm("action","controller",FormMethod.POST)
请对应你的action和controller
快溜 2012-10-17
  • 打赏
  • 举报
回复
AAA改为AddRelease
真相重于对错 2012-10-17
  • 打赏
  • 举报
回复
AddRelease 不等于 AAA
wg5945 2012-10-17
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 的回复:]

晕倒。
你这个要处理Action传入的参数需要自己指定模型绑定的类。 mvc3默认使用DefaultModelBinder类对提交的数据和模型映射。你可以自己实现IModelBinder接口在global.cs中指明某个Control用自己的ModelBinder类赋值。
[/Quote]

源代码大概贴一些,使用MVC3:

2个页面
登录页面:

control:

public ActionResult LogOn()

...
return View();


[HttpPost]
public ActionResult LogOn(UserInfoModel model)

// 现在这里面进不去
...
return View();



View:

<% Html.BeginForm("Confirm", "UserInfoMgr", FormMethod.Post){ %>
...
<button class="" type="submit"><span>确认</span></button>
<%} %>


确认页面:

control:

public ActionResult Confirm()

...
return View();


[HttpPost]
public ActionResult Confirm(UserInfoModel model)

...
return View();



Model:

public class UserInfoModel
{
[Required(ErrorMessage = "※必须输入。")]
[Display(Name = "昵称")]
public string NickName { get; set; }
}


Model里面的必须输入验证无效,
原来我写的是<% Html.BeginForm(null, null, FormMethod.Post); %>
这时可以进

[HttpPost]
public ActionResult LogOn(UserInfoModel model)

...
return View();



这个方法,把
return View();
改成
return RedirectToAction("Confirm", "UserInfoMgr",model);

也可以进Confirm,不过会显示url参数,这个不想要,并且不允许使用session和TempData
「已注销」 2012-10-17
  • 打赏
  • 举报
回复
晕倒。
你这个要处理Action传入的参数需要自己指定模型绑定的类。 mvc3默认使用DefaultModelBinder类对提交的数据和模型映射。你可以自己实现IModelBinder接口在global.cs中指明某个Control用自己的ModelBinder类赋值。
wg5945 2012-10-17
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 的回复:]

引用 15 楼 的回复:
引用 14 楼 的回复:

引用楼主 的回复:
<% Html.EndForm(); %>
<input type="submit" value="添加" />

楼主啊,你仔细看看你提交的那个submit按钮是不是在form表单里面啊。

不在你提交只能提交到页面对应的那个Action处理啊。


请看11楼。

这个不是实际代码,网上随……
[/Quote]

那个button应该是在form里面的,没有问题
而且是能进入提交到页面对应的那个Action中的,路由配置应该是没有问题的

说的再简单一点吧

使用<% Html.BeginForm("AddRelease", "User", FormMethod.Post); %>这个之后,Model的里面的一些验证就没用了,会直接进入AddRelease这个action

何年 2012-10-17
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 的回复:]
引用 14 楼 的回复:

引用楼主 的回复:
<% Html.EndForm(); %>
<input type="submit" value="添加" />

楼主啊,你仔细看看你提交的那个submit按钮是不是在form表单里面啊。

不在你提交只能提交到页面对应的那个Action处理啊。


请看11楼。

这个不是实际代码,网上随便找的~~
[/Quote]
能把你的URL路由配置页面贴出来看看么?觉得可能还是你的路由问题。。
wg5945 2012-10-17
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 的回复:]

引用楼主 的回复:
<% Html.EndForm(); %>
<input type="submit" value="添加" />

楼主啊,你仔细看看你提交的那个submit按钮是不是在form表单里面啊。

不在你提交只能提交到页面对应的那个Action处理啊。
[/Quote]

请看11楼。

这个不是实际代码,网上随便找的~~
「已注销」 2012-10-17
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
<% Html.EndForm(); %>
<input type="submit" value="添加" />
[/Quote]
楼主啊,你仔细看看你提交的那个submit按钮是不是在form表单里面啊。

不在你提交只能提交到页面对应的那个Action处理啊。
wg5945 2012-10-17
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 的回复:]

引用 10 楼 的回复:

<% Html.BeginForm("AddRelease", "User", FormMethod.Post); %>
这个当然会解析成
<form method="post" action="/User/AddRelease">


那你在UserController类下有AddRelease这个Action吗?
[/Quote]

嗯,是有的,会直接进去。

其实我想问的是:
原来我写的是<% Html.BeginForm(null, null, FormMethod.Post); %>
这时可以进源Action的[HttpPost],

但是改成<% Html.BeginForm("AddRelease", "User", FormMethod.Post); %>之后
就会跳过源Action的[HttpPost]方法
直接进入AddRelease这个方法

因为原来在源Action的[HttpPost]方法中我写了一些逻辑,现在进不去了,我想问一下有没有解决方法?
「已注销」 2012-10-17
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]

<% Html.BeginForm("AddRelease", "User", FormMethod.Post); %>
这个当然会解析成
<form method="post" action="/User/AddRelease">
[/Quote]

那你在UserController类下有AddRelease这个Action吗?
wg5945 2012-10-17
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

C# code



<% Html.BeginForm("AddRelease", "User", FormMethod.Post); %>
<ul>
<li>用户名: <%= Html.TextBox("UserName") %></li>
<li>密码: <%= Html.TextBox("Password") %></l……
[/Quote]

这个是我随便从网上copy的代码~~

呵呵~~
wg5945 2012-10-17
  • 打赏
  • 举报
回复
<% Html.BeginForm("AddRelease", "User", FormMethod.Post); %>
这个当然会解析成
<form method="post" action="/User/AddRelease">
bo3235 2012-10-17
  • 打赏
  • 举报
回复



<% Html.BeginForm("AddRelease", "User", FormMethod.Post); %>
<ul>
<li>用户名: <%= Html.TextBox("UserName") %></li>
<li>密码: <%= Html.TextBox("Password") %></li>
</ul>


<input type="submit" value="添加" /> ---貌似应该放在form里面


<% Html.EndForm(); %>



62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧