2014-02-19 5 views
1

У меня есть основной вид и основная модель.ASP.NET MVC Данные не поступают в контроллер с частичного просмотра

Внутри этой точки зрения у меня есть такие строки

foreach (var loadTask in Model.LoadTasks) 
{ 
    Html.RenderPartial("TripUpdateTask", new TripUpdateTaskModel { Task = loadTask }); 
} 

Таким образом, в основной модели я есть

public List<OrderTaskRecord> LoadTasks { get; set; } 

Суб является:

public class TripUpdateTaskModel 
{ 
    public OrderTaskRecord Task { get; set; } 
} 

я играл и играл, но по-прежнему не в состоянии сохранить данные. Вот текущий и простой взгляд.

<tr>  
    <td>Actual Time:</td> 
    <td>@Html.TextBoxFor(m => m.Task.Task.ActualTime)</td> 
</tr> 

В необработанном html эти элементы управления времени имеют одинаковое имя и тот же идентификатор. Поэтому я не знаю, что нужно сделать, чтобы сохранить это.

Я имею в виду данные, введенные на главном экране обратно к контроллеру отлично, но не с частичным видом

Я использую Html.BeginForm и Fieldset в главном окне, как это:

@using (Html.BeginForm("TripUpdate", "SupplierBookingUpdate", FormMethod.Post, new { id = "SupplierBookingUpdateSave" })) 
{ 
    <fieldset> 
    .. table 
    </fieldset> 
} 
+0

Вы спрашиваете, как установить имя текстовых полей? –

+0

Я хочу спросить, как сохранить данные с частичного просмотра. что мне нужно переделать в коде. потому что введенные значения не сохраняются в основной модели – user3328720

+0

Вы имеете в виду: когда они возвращаются в ваш контроллер? –

ответ

2

Вместо того, чтобы пытаться присвоить имя каждому текстовое поле индивидуально, я бы рекомендовал, чтобы связать свою коллекцию OrderTaskRecord. Таким образом, вам не нужно беспокоиться о количестве текстовых полей и их имен.

Существует хорошее введение от Scott Hanselman по этому вопросу.

Вы также можете попробовать другой пример здесь: http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx/

0

Если вы хотите передать пользовательское имя генерируемому input, используя это. Он передает HTML атрибуты метода TextBoxFor:

@Html.TextBoxFor(m => m.Task.Task.ActualTime, new { Name = "yourName") 

Конечно, вы можете создать счетчики, и т.д. здесь, чтобы держать их уникальными.

Вы можете извлечь их позже в вашем контроллере, получая данные формы:

Request.Form["yourName"]; 
+0

Я хочу спросить, как сохранить данные с частичного просмотра. что мне нужно переделать в коде. потому что введенные значения не сохранены в основной модели – user3328720

+0

@ user3328720: См. обновление –

+0

Как вы думаете, это хорошая идея? У меня уже есть 4 поля для каждого элемента в коллекции. И 10 предметов сейчас. Это 40 элементов управления – user3328720

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