以下のコードは、それぞれにチェックボックスが付いた国のリストを表示します。チェックされたチェックボックスを保存することを目的としています。ただし、送信ボタンがクリックされると、
newmodelのメソッドActionResult Index(UserModel newmodel)で、パラメーターSelectedSecurityGroup、SelectedSecurityObject、およびSecurityGroupsの値がnullになります。
このコードの何が問題になっているのでしょうか。
UserModel.cs内
public class UserModel
{
public string SelectedSecurityGroup { get; set; }
public string SelectedSecurityObject { get; set; }
[DisplayName("Security Group")]
public virtual ICollection<SecurityGroup> SecurityGroups { get; set; }
}
public class SecurityGroup
{
public int Id { get; set; }
public string SecurityGroupName { get; set; }
public bool Active { get; set; }
}
UserController.cs内
[HttpGet]
public ActionResult Index()
{
UserModel objUserModel = new UserModel();
List<SecurityGroup> lstSecurityGroup = FillViewBag();
objUserModel.SecurityGroups = lstSecurityGroup;
return View(objUserModel);
}
[HttpPost]
public ActionResult Index(UserModel newmodel)
{
string strtest = "";
//Code to save data
return View(newmodel);
}
private List<SecurityGroup> FillViewBag(UserModel model = null)
{
List<SecurityGroup> lstSecurityGroup = new List<SecurityGroup>();
lstSecurityGroup.Add(new SecurityGroup { Id = 1, SecurityGroupName = "India", Active = true });
lstSecurityGroup.Add(new SecurityGroup { Id = 2, SecurityGroupName = "USA", Active = true });
lstSecurityGroup.Add(new SecurityGroup { Id = 3, SecurityGroupName = "Pakistan", Active = false });
lstSecurityGroup.Add(new SecurityGroup { Id = 4, SecurityGroupName = "Nepal", Active = false });
return lstSecurityGroup;
}
Index.cshtmlで
@model Example.User.Web.Models.UserModel
<!DOCTYPE html>
<html>
<head>
<title>Dashboard</title>
<script src="~/Scripts/jquery-1.11.0.js"></script>
<script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>
</head>
<body>
<div>
<div>
<div id="lists">
@Html.Partial("SecurityListsView", Model)
</div>
</div>
</div>
</body>
</html>
SecurityListsView.cshtml内
@model Example.User.Web.Models.UserModel
@using (Ajax.BeginForm("Index", "User", new AjaxOptions() { UpdateTargetId = "lists" }))
{
<table>
@{ int i = 0; }
@foreach (var item in Model.SecurityGroups )
{
<tr>
<td>
@Html.CheckBox("fileName", item.Active)
@Html.Hidden("fileId", item.Id)
</td>
<td>
@Html.DisplayFor(modelItem => item.SecurityGroupName)
</tr>
i++;
}
</table>
<input type="submit" name="btn1" value="Save" />
}
ついにそれが機能するようになりました。修正されたコードは次のとおりです。SecurityListsView.cshtml内
@model Example.User.Web.Models.UserModel
@using (Html.BeginForm("Index", "User", "POST"))
{
<table>
@{ int i = 0; }
@foreach (var newitem in Model.SecurityGroups)
{
<tr>
<td>
@Html.CheckBoxFor(model => model.SecurityGroups[i].Active)
@Html.HiddenFor(model => model.SecurityGroups[i].Id, "Value")
</td>
<td>
@Html.DisplayFor(model => model.SecurityGroups[i].SecurityGroupName)
</tr>
i++;
}
</table>
<input type="submit" name="btn1" value="Save" />
}
それが誰かを助けることを願っています!:)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加