我需要将POST操作设置为绝对URL(例如http://www.cnn.com)。有没有办法使用Html.BeginForm()帮助程序并传递它的URL?
答案 0 :(得分:63)
BeginForm方法有几个重载。 为了使用所需的url在form标签上设置action属性,你需要使用以下的BeginForm重载:
BeginForm(String, String, FormMethod, IDictionary<String, Object>)
// here are the parameter names:
BeginForm(actionName, controllerName, method, htmlAttributes)
由于您要发布到外部站点,因此无需设置actionName和controllerName,只需将它们保留为null。
@Html.BeginForm(
null, null, FormMethod.Post, new {@action="http://cnn.com/post"}
)
这不会对动作参数进行编码。
答案 1 :(得分:15)
HtmlHelper.BeginForm
方法所做的一切都可以帮助您创建一个以{1}}标记为目标的本地控制器。如果您要发布到外部网站,只需写出实际的<form>
标记,即
<form>
这就是它的全部。 MVC表单不像ASP.NET WebForms中的表单,其中有一堆ViewState和事件字段以及其他神奇元素。它们只是普通的旧HTML表单。
答案 2 :(得分:0)
检查mvc源代码,html.beginform方法不仅仅创建本机html表单,还添加了我想要的客户端验证,
if (htmlHelper.ViewContext.ClientValidationEnabled)
{
htmlHelper.ViewContext.FormContext.FormId = tagBuilder.Attributes["id"];
}
所以这将是一个问题,我只是写自己的扩展