PDA

View Full Version : نحوه ارسال لیستی از داده از view به controler



shaki_phd
شنبه 18 مرداد 1393, 13:21 عصر
با سلام
من میخواستم بدونم چگونه میشه لیستی از داده ها را از یک view به کنترلر پاس بدم


public int AgentId { get; set; }
public int CountryId { get; set; }
public string CountryName { get; set; }
public int CityId { get; set; }
public string CityName { get; set; }
public int HotelId { get; set; }
public string HotelName { get; set; }
public int RoomId { get; set; }
public string RoomType { get; set; }
public IList<DateTime> Days { get; set; }
public DateTime From { get; set; }
public DateTime To { get; set; }
//public
public IList<Customer> Customers { get; set; }



کلاس مدل من به شکل بالاست
که در view بر اساس این کلاس به طور مثال اجازه ثبت چندین customer میدم اما وقتی به کنترلر ارسال میشه این لیست من null دریافت میشه
چگونه میتونم اطلاعات ارسالی را دریافت کنم

view من هم به شکل زیر هستش



@using (Html.BeginForm())
{
@Html.ValidationSummary(true)

<fieldset>
<legend>Reservation</legend>
@Html.Hidden("RoomId", Model.RoomId)
@Html.Hidden("AgentId", Model.AgentId)
@Html.Hidden("From", Model.From)
@Html.Hidden("To", Model.To)

<div class="row-fluid">
<div class="span1">
@Html.LabelFor(model => Model.HotelName)
</div>
<div class="span1">
@Html.DisplayFor(model => Model.HotelName)
</div>

<div class="span1">
@Html.LabelFor(model => Model.CountryName)
</div>
<div class="span1">
@Html.DisplayFor(model => Model.CountryName)
</div>

<div class="span1">
@Html.LabelFor(model => Model.CityName)
</div>
<div class="span1">
@Html.DisplayFor(model => Model.CityName)
</div>
</div>
<div class="form-inline">
@foreach (var item in Model.Days)
{

<div style="font-size: 10px; width:30px;">@item.Date</div>

}
</div>
@foreach (var item in Model.Customers)
{
<div class="editor-label">
@Html.LabelFor(model => item.FirstName)
</div>
<div class="editor-field">
@Html.EditorFor(model => item.FirstName)
@Html.ValidationMessageFor(model => item.FirstName)
</div>

<div class="editor-label">
@Html.LabelFor(model => item.LastName)
</div>
<div class="editor-field">
@Html.EditorFor(model => item.LastName)
@Html.ValidationMessageFor(model => item.LastName)
</div>

<div class="editor-label">
@Html.LabelFor(model => item.PasportNumber)
</div>
<div class="editor-field">
@Html.EditorFor(model => item.PasportNumber)
@Html.ValidationMessageFor(model => item.PasportNumber)
</div>
}
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}

shaki_phd
دوشنبه 20 مرداد 1393, 09:32 صبح
یعنی هیچ کدوم از دوستان نمیدونند چگونه میشه لیستی از داده ها را از view به کنترلر ارسال کرد

biggrin
دوشنبه 20 مرداد 1393, 11:25 صبح
یعنی هیچ کدوم از دوستان نمیدونند چگونه میشه لیستی از داده ها را از view به کنترلر ارسال کرد


دوست عزیز لطفا Model ها و view را در پروژه قرار بدین تا بتونم کمکتون کنم.

hakim22
دوشنبه 20 مرداد 1393, 11:33 صبح
ModelBinding در صورتی اطلاعات دریافتی از فرم را به آرایه تبدیل می کند که در نام گذاری فیلدهای Input یک اندیس وجود داشته باشد.

مانند :

<input type="text" name="customer[@index].firstName" />


که index باید به صورت دینامیکی تغییر کند.
در سمت سرور کنترلر مربطه باید از نوع آرایه باشد مثلا Ienumerable یا آرایه یا هر جنریک دیگری . همچنین نام مقدار ورودی در اکشن باید Customer باشد.

Cybersilent
سه شنبه 21 مرداد 1393, 09:32 صبح
در اینجا یک نحوه پیاده سازی جهت اضافه کردن سطر های داینامیک در View و دریافت به صورت لیستی از آرایه ها در سمت سرور، آموزش داده شده است.
http://www.techiesweb.net/asp-net-mvc3-dynamically-added-form-fields-model-binding/