gpt4 book ai didi

asp.net-mvc - Sitefinity CMS : Html. BeginFormSitefinity 与外部 URL?

转载 作者:行者123 更新时间:2023-12-04 04:32:11 25 4
gpt4 key购买 nike

我希望有人能在这里帮助我 - 我正在尝试为 Sitefinity 设置一个基本的 MVC 小部件,它将 POST 到外部 URL 以在那里登录用户。问题是,如果我使用常规 HTML 来执行此操作,由于 WebForms 处理表单的方式,该小部件只能在纯 MVC 模式下工作。

我搜索了一下,发现有人解释说,使用常规的“BeginForm”,您可以这样指定外部操作 URL:

Html.BeginForm(null, null, FormMethod.Post, new { @action="EXTERNAL_URL" })

它产生以下打开表单标签:
<form action="EXTERNAL_URL" method="post">

这工作得很好,但仍然输出一个不能与 Sitefinity 一起使用的常规 HTML 表单,因此 Sitefinity 有自己的方法来生成可以在“Html.BeginFormSitefinity”混合模式下工作的表单。此方法具有所有相同的覆盖,但行为方式不同 - 当我尝试使用此代码时:
Html.BeginFormSitefinity(null, null, FormMethod.Post, new { @action="EXTERNAL_URL" })

这将生成以下打开表单标签:
<form action="/TestProject/TestPage/Index" method="POST" name="defaultForm" action="EXTERNAL_URL">

如您所见,它弹出了第二个 Action 属性,而不是像默认 MVC 方法的行为中看到的那样覆盖 Action 属性。

我希望对 Sitefinity 的工作原理有更好理解的人可以在这里提供一些建议?

最佳答案

查看 HybridForm 的来源,它无法修改,因此需要 action htmlAttribute 考虑在内:http://pastebin.com/5dfQdzs8

因此,您可以根据此代码创建自己的表单。
您将需要 html 助手:

public static MyHybridForm BeginFormSitefinity(this HtmlHelper htmlHelper, string actionName, string formName, FormMethod method, IDictionary<string, object> htmlAttributes)
{
return new MyHybridForm(htmlHelper.ViewContext, actionName, formName, method, (object) htmlAttributes);
}

并覆盖 GenerateActionUrl()在您的 MyHybridForm通过使用 Action htmlAttribute 来考虑。

关于asp.net-mvc - Sitefinity CMS : Html. BeginFormSitefinity 与外部 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20413925/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com