2013-12-06 2 views
2

Я надеюсь, что кто-то может мне помочь здесь - я пытаюсь настроить базовый виджет MVC для Sitefinity, который будет POST на внешний URL для входа пользователя в систему. Проблема в том, что если я использую обычный HTML для этого, виджет будет работать только в чистом режиме MVC благодаря тому, как WebForms занимается формами.Sitefinity CMS: Html.BeginFormSitefinity с внешним URL?

Я гугл вокруг немного, и обнаружил, что люди, объясняющие, что с обычным «BeginForm» вы можете указать внешний URL действия Thusly:

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

порождающих следующую форму открытия тега:

<form action="EXTERNAL_URL" method="post"> 

Это работает очень хорошо, но все равно выводит обычную HTML-форму, которая не работает с Sitefinity, поэтому у 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"> 

Как вы можете увидеть, что вместо второго атрибута действия вместо атрибута действия появляется второй атрибут действия, как показано в поведении метода MVC по умолчанию.

Я надеюсь, что кто-то с лучшим пониманием того, как работает Sitefinity, может дать вам несколько советов?

+0

Если это только то, что делает «BeginFormSitefinity», то почему бы вам просто не написать HTML «вручную» без каких-либо помощников: '

' ? – nemesv

ответ

3

Глядя на источниках 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 с помощью действия htmlAttribute во внимание.

+0

Это действительно хороший ответ - спасибо! –

Смежные вопросы