Как я могу сделать форму пользовательского элемента управления переносимой на другие страницы? - PullRequest
2 голосов
/ 01 декабря 2008

У меня есть пользовательский элемент управления, который будет использоваться на нескольких страницах (как обычно для пользовательских элементов управления), который содержит форму. Я думал о том, как гарантировать его функциональность.

Сначала я хотел, чтобы один контроллер с одним методом принимал значения для этой формы. Единственное, что меня блокирует, это то, что после того, как этот метод выполнен с вычислениями и т. Д., Он должен переслать другому контроллеру и методу в зависимости от представления, с которого возник пользовательский элемент управления.

Затем я хотел, чтобы все контроллеры, которые имеют этот пользовательский контроль, имели один и тот же фиксированный метод, который затем перенаправлял бы на страницу по умолчанию для этого контроллера. Это сработало бы, только если у фиксированного метода была только одна опция для переадресации (сейчас это так, но, может быть, не завтра) И что я мог бы каким-то образом получить вызывающий контроллер при создании тега формы.

Есть ли какой-нибудь чистый способ заставить одно из моих предложений работать или, может быть, есть другой вариант, чтобы заставить это работать?

1 Ответ

2 голосов
/ 01 декабря 2008

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

Например:

MyControl.ascx.cs:

/*snip*/
public string FormAction {get;set;}
/*snip*/

MyControl.ascx:

<% using(BeginForm(FormAction)){ %>
<!-- yadda -->
<% } %>

И в любом aspx:

<!-- boring html goes here -->
<%=Html.RenderUserControl(“~/Views/Shared/MyControl.ascx”,null /*orwhatever*/, new {FormAction="ActionThatHandlesMyFormPostLol"})%>

BeginForm принимает несколько различных аргументов, которые позволят вам контролировать, где и как ваша форма публикует. Я не уверен на 100% по вашей проблеме, но я надеюсь, что это даст вам представление о том, как двигаться дальше ...

...