2010-12-15 2 views
0

Я все еще новичок в .NET MVC, поэтому, пожалуйста, поправьте меня, если я делаю что-то глупое. Я пытаюсь создать комбинацию действий/представлений, которая позволит мне отображать 2 формы редактирования из 1 запроса linq. Так вот мое действие:ASP.NET MVC Несколько форм

Function Settings() As ActionResult 
    Dim pagetext = (From t In _db.PageTexts _ 
        Where t.campus = My.Resources.Campus _ 
        Select t) 
    Return View(pagetext) 
End Function 

А вот мое мнение:

<% For Each item As EDKiosk.PageText In Model%> 
<% Using Html.BeginForm("Settings", "Admin")%> 
    <div class="editor-label"> 
     <%= Html.LabelFor(Function(model) item.recommend)%> 
    </div> 
    <div class="editor-field"> 
     <%= Html.TextAreaFor(Function(model) item.recommend)%> 
     <%= Html.ValidationMessageFor(Function(model) item.recommend)%> 
    </div> 
<% End Using %> 
<% Next %> 

Итак, мой первый вопрос, я делаю это право? Затем мой вопрос о последующих действиях заключается в том, как мой метод обрабатывал бы эти данные? Заранее спасибо!

EDIT:

предложение Per Самуила, я переработан мой код, как this-

<% Dim hidden = New With {Key .type = "hidden"}%> 
<div class="editor-field"> 
    <%= Html.TextBox("id", item.id.ToString(), hidden)%> 
</div> 

<div class="editor-field"> 
    <%= Html.Label("recommend")%> 
    <%= Html.TextArea("welcome", item.recommend.ToString())%> 
</div> 

Это работает, но я чувствую, как его еще вид неуклюжим. Мысли?

ответ

0

Вы создаете формы с одним элементом формы, recommend. Возможно, вам понадобится скрытое поле формы для связанного идентификатора или укажите идентификатор в данных маршрута действия формы.

0

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

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