我想一個userid
傳遞給我的控制器。我的動作動作是這樣的,你可以在這裏看到:通模式和額外的參數從視圖到MVC
[HttpPost]
[Authorize(Roles = "Admin,Expert")]
public ActionResult AddExpert(AssistanceJuror assistanceJuror,int UserId)
{
User user = objUserRepository.FindBy(i => i.Id == assistanceJuror.UserId).First();
user.Enable = "فعال";
assistanceJuror.Date = DateTime.Now;
objUserRepository.Edit(user);
objUserRepository.Save();
objAssistanceJurorRepository.Add(assistanceJuror);
TempData["Message"] = "کارشناس به معاونت اختصاص داده شد";
objAssistanceJurorRepository.Save();
return RedirectToAction("IndexExpert", "Assistance");
}
所以這個動作期望2個參數,一個是我的模型,另一個是userId
。所以我需要從視圖中獲得這兩個值我的看法是這樣的:
@using ViewModelDomain
@using Repository;
@model DomainClass.AssistanceJuror
@{
ViewBag.Title = "AddExpert";
}
@using (Html.BeginForm())
{
@Html.ValidationSummary(true)
<div class="wrapper-left">
<div class="wrapper-top-addCompany">
انتساب کارشناس به معاونت
<div style="float: left; padding-left: 20px;">
<div class="divider"></div>
<div class="buttonPossion">
@Html.ActionLink("بازگشت", "Index", "Assistance", new { companyid = ViewBag.firstIdeaId }, new { @class = "buttonBlueLink" })
</div>
<div class="divider"></div>
</div>
</div>
<div class="wrapper-Member" style="padding-bottom: 30px; margin-bottom: 5px; width: 100%; min-height: 550px;">
<h2>اضافه کردن کارشناس جدید
</h2>
<br />
<br />
<br />
<div class="editor-label">
انتخاب معاونت
</div>
<div class="editor-field">
@Html.DropDownListFor(model => model.AssistanceId, (SelectList)ViewBag.listAssistance)
</div>
<div class="editor-label">
انتخاب کارشناس
</div>
@* <div class="editor-field">
@Html.DropDownListFor(model => model.userId, (SelectList)ViewBag.listDisableExpert)
</div>*@
@{
if (User.IsInRole("Expert") || User.IsInRole("Admin"))
{
<div class="wrapper-Member" style="border-top: 1px solid #d3d3d3; margin-top: 30px; width: 99.5%; border-left: 1px solid #d3d3d3; margin-right: 1px">
<div class="tab-list-company" style="margin-right: -1px; width: 180px">
<h2 style="font: normal 13px BHoma; margin-right: 10px; margin-top: 2px;">اختصاص کارشناس به معاونت
</h2>
</div>
<div class="list-company" style="border: none; width: 98%">
<table>
<thead>
<tr>
<th>نام و نام خانوادگی</th>
<th>سطح تحصیلات</th>
<th>رشته تحصیلی</th>
<th>شماره همراه</th>
<th>تلفن</th>
<th>ایمیل</th>
@if (User.IsInRole("Expert") || User.IsInRole("Admin"))
{
<th style="width: 20px;">اضافه</th>
}
</tr>
</thead>
@{
userRepository objUserRepository = new userRepository();
//var listJuror = objUserRepository.FindBy(i => i.Permission == "Juror").ToList();
List<DomainClass.User> listDisableAssistance = objUserRepository.ReturnUserByEnablePermission("غیرفعال", "Assistance");
}
@foreach (var temp in listDisableAssistance)
{
<tr>
<td>
@{
string fullName = temp.Name + " " + temp.Family;
}
@Html.DisplayFor(modelItem => fullName)
</td>
<td>
@Html.DisplayFor(modelItem => temp.EducationLevel)
</td>
<td>
@Html.DisplayFor(modelItem => temp.Field)
</td>
<td>
@Html.DisplayFor(modelItem => temp.Mobile)
</td>
<td>
@Html.DisplayFor(modelItem => temp.Tell)
</td>
<td>
@Html.DisplayFor(modelItem => temp.Email)
</td>
<td>
@using (Html.BeginForm("AddExpert", "Assistance", routeValues: new { userid = temp.Id }))
{
<input type="submit" value="" class="Add" title="اضافه کردن" />
}
</td>
</tr>
}
</table>
</div>
</div>
}
}
</div>
</div>
}
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
在這部分
<td>
@using (Html.BeginForm("AddExpert", "Assistance", routeValues: new { userid = temp.Id }))
{
<input type="submit" value="" class="Add" title="اضافه کردن" />
}
</td>
我想通過我的userId
我的行動,但它不起作用,我得到一個錯誤,說用戶ID爲空。
問候
您生成嵌套窗體。不知道它的問題,但其無效的HTML和不支持的標準,所以你應該考慮改變它。如果模型不爲null,那麼我認爲它必須冒泡到外部形式並提交,以便內部形式路由值可以被忽略。 – 2014-08-29 12:11:03
您的電話是否以userid null的動作到達? – faby 2014-08-29 13:14:06
@faby在第一次,我點擊提交我得到這個錯誤:參數字典中包含一個空條目參數'userid'of不可空的類型'System.Int32'方法'System.Web.Mvc.ActionResult AddExpert( 'Presentation.Controllers.AssistanceController'中的'DomainClass.AssistanceJuror,Int32')。可選參數必須是引用類型,可爲空類型,或者聲明爲可選參數。 參數名稱:參數 – 2014-08-29 13:18:45