This is my code in modeview:-
public partial class DistriputeMultipleNotificatiponsViewModel
{
public virtual IEnumerable<ClientsNotifications> list { get; set; }
public virtual DistrbuteTechToNotifi create { get; set; }
public virtual ClientsNotifications displayname { get; set; }
}
View:-
@model WebProject.Models.DistriputeMultipleNotificatiponsViewModel
@using WebProject.Models.BusinessLayer
@using App_GlobalResources;
@{
ViewBag.Title = WhiteWhaleLanguage.Index;
}
@using (Html.BeginForm("SendMultipleNotificationToTechnical", "ClientsNotifications", FormMethod.Post))
{
@Html.ValidationSummary()
@Html.AntiForgeryToken()
<div class="box box-DG">
<div class="box-header">
<span style="color:#2D69B7"></span>
<h3 class="box-title">@WhiteWhaleLanguage.NotificationsList</h3>
</div>
<div class="box-body">
<table id="example1" class="table table-bordered table-striped box-DG">
<thead>
<tr>
<th>
@Html.DisplayNameFor(model => model.displayname.NotificationsTypes.Name_ar)
</th>
<th>
@Html.DisplayNameFor(model => model.displayname.ID)
</th>
<th>
@Html.DisplayNameFor(model => model.displayname.ServiceOrderNo)
</th>
<th>
@Html.DisplayNameFor(model => model.displayname.ClientId)
</th>
<th>
@Html.DisplayNameFor(model => model.displayname.NotificationDate)
</th>
<th>
@Html.DisplayNameFor(model => model.displayname.LocationCenterID)
</th>
<th>
@Html.DisplayNameFor(model => model.displayname.SeenDate)
</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach (var item in Model.list)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.NotificationsTypes.Name_ar)
</td>
<td>
@Html.DisplayFor(modelItem => item.ID)
</td>
<td>
@Html.DisplayFor(modelItem => item.ServiceOrderNo)
</td>
<td>
@Html.DisplayFor(modelItem => item.ClientId)
</td>
<td>
@Html.DisplayFor(modelItem => item.NotificationDate)
</td>
<td>
@Html.DisplayFor(modelItem => item.LocationCenterID)
</td>
@if (item.SeenDate != null)
{
<td>
@Html.DisplayFor(modelItem => item.SeenDate.Value.Day)/@Html.DisplayFor(modelItem => item.SeenDate.Value.Month)/@Html.DisplayFor(modelItem => item.SeenDate.Value.Year) @Html.DisplayFor(modelItem => item.SeenDate.Value.Minute):@Html.DisplayFor(modelItem => item.SeenDate.Value.Hour)
</td>
}
else
{
<td></td>
}
<td>
@Html.ActionLink(WhiteWhaleLanguage.Details, "Details", new { id = item.ID })
@*<div class="btn-group btn-default">
<button type="button" class="btn btn-default btn-sm ">@WhiteWhaleLanguage.Action</button>
<button type="button" class="btn btn-default dropdown-toggle btn-sm " data-toggle="dropdown" aria-expanded="false">
<span class="caret"></span>
<span class="sr-only">Toggle Dropdown</span>
</button>
<ul class="dropdown-menu btn-sm " role="menu">
@if (BusinessLayer._CheckPErmission("ClientsNotifications", "Edit"))
{
<li>@Html.ActionLink(WhiteWhaleLanguage.Edit, "Edit", new { id = item.ID })</li>
}
<li>@Html.ActionLink(WhiteWhaleLanguage.Details, "Details", new { id = item.ID })</li>
</ul>
</div>*@
</td>
</tr>
}
</tbody>
</table>
</div>
</div>
<div class="container">
<br />
<div class="col-lg-11">
<div class="panel panel-primary">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="" data-parent="#accordion" href="#filterPanel"> @WhiteWhaleLanguage.DistributionTechnial </a>
<span class="pull-right panel-collapse-clickable" data-toggle="collapse" data-parent="#accordion" href="#filterPanel">
^__i class="glyphicon glyphicon-chevron-down">
</span>
</h4>
</div>
<div id="filterPanel" class="panel-collapse panel-collapse collapse">
<div class="panel-body">
<div class="form-group">
@Html.LabelFor(model => model.create.CenterTechnical.TechName, new { @class = "col-md-2 control-label" })
<div class="col-md-4">
@Html.DropDownListFor(model => model.create.CenterTechnicalID, (SelectList)ViewBag.TechnicalList, WhiteWhaleLanguage.PleaseSelect, new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.create.CenterTechnicalID, "", new { @class = "text-danger" })
</div>
</div>
<div class="box-footer">
<input type="submit" name="" value=@WhiteWhaleLanguage.SendReply , class="btn btn-primary btn-xl" />
@Html.ActionLink(WhiteWhaleLanguage.BackToList, "Index", null, new { @class = "btn btn-default btn-sm" })
</div>
</div>
</div>
</div>
</div>
</div>
}
this is ActionResult in controller:-
public ActionResult SendMultipleNotificationToTechnical()
{
DistriputeMultipleNotificatiponsViewModel model = new DistriputeMultipleNotificatiponsViewModel();
if(ModelState.IsValid)
{
string constr = ConfigurationManager.ConnectionStrings["WhiteWhaleModel"].ConnectionString;
foreach (var id in model.list)
{
using (SqlConnection con = new SqlConnection(constr))
{
string query = " INSERT INTO DistrbuteTechToNotifi(ClientsNotificationsID,LocationCenterID, CenterTechnicalID, VisiteDate, DistributeDate) ";
query = query + " VALUES(@ClientsNotificationsID,@LocationCenterID, @CenterTechnicalID, @VisiteDate, @DistributeDate); ";
query = query + " SELECT SCOPE_IDENTITY(); ";
using (SqlCommand cmd = new SqlCommand(query))
{
cmd.Connection = con;
con.Open();
cmd.Parameters.AddWithValue("@ClientsNotificationsID", model.create.ClientsNotifications.ID);
cmd.Parameters.AddWithValue("@LocationCenterID", model.create.LocationCenterID);
cmd.Parameters.AddWithValue("@CenterTechnicalID", model.create.CenterTechnicalID);
cmd.Parameters.AddWithValue("@VisiteDate", model.create.VisiteDate);
cmd.Parameters.AddWithValue("@DistributeDate", DateTime.UtcNow);
cmd.ExecuteNonQuery();
con.Close();
}
using (SqlConnection con2 = new SqlConnection(constr))
{
string query2 = " Update ClientsNotifications set StateID = 4 ";
query2 = query2 + " Where ID = @ClientsNotificationsID ";
using (SqlCommand cmd2 = new SqlCommand(query2))
{
cmd2.Connection = con2;
con2.Open();
cmd2.Parameters.AddWithValue("@ClientsNotificationsID", model.create.ClientsNotificationsID);
cmd2.ExecuteNonQuery();
con2.Close();
}
}
return View("Index");
}
}
}
return View(model);
}
What I have tried:
i try to insert multiple row with one value from dropdownlist and i use viewmodel ,
but (model.list) give me null value