2013-05-30 6 views
6

Это очень хорошо может оказаться очень глупым вопросом в некотором роде, но в основном у меня есть эта «форма» в модели, которая привязана к моему представлению как форме, но я не знаю, t мог фактически передавать любые данные из представления. Он имеет только два свойства: свойство Id и свойство String. Я пытаюсь заполнить свойство String текстом из скрытого текстового поля на странице без везения.Прикрепление скрытого текстового поля к форме MVC

Код Форма:

public class AllocateListForm 
{ 
    public int Id { get; set; } 

    public virtual string HiddenText { get; set; } 
} 

Соответствующий Просмотр Код:

<% using (Html.BeginForm("SaveExit", "User", new { }, FormMethod.Post, new { id = "selectExitPoints" })) { %> 
    <fieldset> 
      <input type="hidden" id="HiddenText" /> 
    </fieldset> 
    <% } %> 

Существует JQuery за кулисами, что заполняет HiddenText с текстом, и я могу заверить вас, что он заполняет. Существует также JQuery за кулисами, который выполняет представление Ajax, и я могу пообещать вам, что этот код работает, поскольку он используется в другом месте приложения без проблем. Когда я выполняю действие, которое отправляет форму на сервер, и я перехожу к моему коду контроллера, на который это указывает, у меня есть точка останова, поэтому я могу войти в консоль и проверить, есть ли в поле HiddenText в форме какие-либо данные ноль. Может ли кто-нибудь указать мне в правильном направлении?

ответ

8

Если вы назначаете имя входа «HiddenText», связующее устройство должно забрать его. Я предполагаю, что ваше действие контроллера принимает параметр AllocateListForm в качестве параметра.

<input type="hidden" name="HiddenText" id="HiddenText" /> 

Вы также можете использовать Html Helpers так:

@Html.HiddenFor(model => model.HiddenText, new { id = "HiddenText" }) 

EDIT: Добавить AllocateListForm как свойство вашей основной модели, а затем изменить помощника, чтобы быть @Html.HiddenFor(model => model.MyAllocateListForm.HiddenText)

+0

Ваше предположение верно. Это 'public JsonResult SaveExit (AllocateListForm exitListForm)', поэтому в консоли, которую я проверял?? exitListForm.HiddenText'. Однако я не могу использовать HTML-помощник, так как у моей модели нет свойства для HiddenText, только в форме. – Jfabs

+0

@Jared Является ли ваше мнение строго типизированным для другой модели? Похоже, вы должны создать viewmodel, чтобы иметь возможность легко получить доступ к свойствам формы. – Mansfield

+0

Он сильно типизирован для другой модели, я думаю, я просто искал самый простой способ сделать это. Эта страница очень проста, она просто представляет пользователю список флажков и позволяет им проверять и снимать флажок из списка, затем скрытое поле заполняется их выборками, которые должны быть переданы в контроллер. – Jfabs

4

Это должно сделать трюк, если вы хотите сделать это Razor-way.

@Html.HiddenFor(model => model.HiddenText); 
+0

Я не могу использовать HTML-помощники, так как у моей модели нет поля для HiddenText, только в форме. – Jfabs

+0

Итак, если бы я написал «@ Html.HiddenFor (model => model.RegUserID, new {id =« HiddenText »}), как бы установить значение для model.RegUserID? – Spionred

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