Если вы посмотрите пример создания и редактирования ужинов NerdDinner, вы увидите, что они используют частичную (ViewUserControl или ASCX) DinnerForm для установки функциональности создания и редактирования обеды в один файл, потому что это очень важно, и они используют его с помощью RenderPartial («DinnerForm»).Редактирование и создание представления с использованием частичного редактирования EditCreate.ascx в ASP.NET MVC
Этот подход кажется прекрасным для меня, но у меня возникла проблема, когда вам нужно добавить дополнительные значения маршрута или свойства html в тег формы.
Это поднимает текущее действие и контроллер автоматически:
<% using (Html.BeginForm()) { %>
Однако, если я использую другую BeginForm() перегрузки, которая позволяет передавать в ENCTYPE или любой другой атрибут я должен сделать это следующим образом:
<% using ("Create", "Section", new { modal = true }, FormMethod.Post, new { enctype = "multipart/form-data" }))
, и, как вы можете видеть, мы теряем возможность автоматического обнаружения, в котором View мы вызываем RenderPartial («OurCreateEditFormPartial»). У нас не может быть жестко заданных значений, потому что в Edit View эта обратная передача завершится неудачно или не вернется к правильному действию контроллера.
Что делать в этом случае?
это определенно помогает, но выглядит немного натянуто. Дело в том, что каждый день я сталкиваюсь с другим специальным случаем, когда мне приходится писать некоторые пользовательские помощники или расширения для достижения некоторых базовых функций, которые уже должны быть там, но, по-видимому, дизайнеры ASP.NET MVC его пропустили. Мне интересно, как долго это будет продолжаться со мной. ;) – mare
90% «помощников» MVC, которые вы видите, плавающие вокруг сети или на SO, - это просто семантический сахар, который сокращает в противном случае длительные звонки. Команда MVC «пропустила» что-нибудь здесь. Большую часть времени вам нужно прямо перед вами, просто нужно знать, где искать. – jfar
Я согласен с jfar ... 90% времени, когда он делает то, что я хочу, но мне нравится то, что я могу легко добавить функциональность, которая мне нужна, когда ее не существует, причем выше это точка в случае. – anthonyv