如何将绝对URI放在<form>
MVC3 Html助手生成的Html.BeginForm()
标记的action属性中。我正在使用MVC3验证,并且不想通过编写自己的Form标签来丢失它。
我尝试了Html.BeginForm(new { action ="http://absolute.com"})
和Html.BeginForm(new { @action ="http://absolute.com"})
,渲染的html为<form action="/Pro/Contact/http%3a/absolute.com/">
。正如你所看到的那样,它被附加而不是被替换。
答案 0 :(得分:4)
BeginForm
方法用于从参数变量中提供的routedata生成相对路径。这意味着,您要设置名称为action
的URI参数并为其提供值http://absolute.com
,因此将对该值进行编码。
您想要使用的是overload,它会要求您提供htmlAttributes。
此不会为操作属性编码值:
@using (Html.BeginForm(
null, null, FormMethod.Post,
new {@action="http://absolute.com/submit/example"}
)){}
// the result is:
<form action="http://absolute.com/submit/example" method="post">
</form>
UPDATE:方法如下所示,不会使用JavaScript客户端验证。
因为,你真的不需要助手来找出表单的路径。您可以手动使用表单的html和set动作。
如果您使用输入字段的帮助程序,验证仍然有效。
<form action="http://absolute.com/submit/example" method="post">
@Html.LabelFor(model => model.Example)
@Html.ValidationMessageFor(model => model.Example, "*")
@Html.TextAreaFor(model => model.Example, 8, 60, null)
</form>
答案 1 :(得分:0)
一种方式是..我们可以使用RedirectResult(“http://absolute.com”);在控制器动作方法中。
如果您从控制器(或动作过滤器等)重定向,则可以使用RedirectResult作为ActionResult类型。