使用mvc3获取根据数据库中的值选择的单选按钮
问题描述:
我在创建视图中有一个单选按钮列表。它在选择下拉列表时与复选框一起生成。使用mvc3获取根据数据库中的值选择的单选按钮
@model IEnumerable<Admin.Models.viewmodel>
@foreach (var item in Model)
{
<label>
@Html.CheckBox("User", item.Selected, new { @id = "User" + item.Value, @value = item.Value })
@item.Text
</label>
<label>
@Html.RadioButton("rdnUser" + item.Value.TrimStart(), 1, item.IsSelected,new { @id = "rdnUser"})Primary
</label>
<label>
@Html.RadioButton("rdnUser" + item.Value.TrimStart(), 2,item.IsSelected, new { @id = "rdnUser"})Secondary
</label>
}
Iam将单选按钮的值保存到表UserMapping中的字段UserType。
当我点击编辑链接,我想根据数据库值选择的单选按钮..
创建一个视图模型采取复选框,并radiobutton.viewpartial视图模型数值是: -
public class viewpartial : System.Web.Mvc.SelectListItem
{
public int Values { get; set; }
public bool IsSelected { get; set; }
}
查询是: -
var query = (from u in UserMapping
where u.UserID == id && u.Active == 1
join f in Financial on u.FinancialID equals f.FinancialID
into c
from d in c.DefaultIfEmpty()
select new viewpartialIFC
{
Text = d.FiName,
Value = SqlFunctions.StringConvert((double)d.FinancialID),
Selected = d.FinancialID == u.FinancialID ? true : false,
Values = u.UserType,
//IsSelected=???
}).Distinct().ToList();
我应该在查询什么样的变化得到单选按钮选择..
答
这是你可以创建一个用户列表,并可以选择它们选择(复选框),并选择一个特定的角色(单选按钮)的方式:
视图模型:
public class AdminViewModel
{
public int Id { get; set; }
public string Name { get; set; }
public bool isSelected { get; set; }
public int RadioValue { get; set; }
}
控制器:
public class HomeController : Controller
{
public ActionResult Index()
{
var data = GenerateViews();
return View(data);
}
[HttpPost]
public ActionResult Index(IList<AdminViewModel> data)
{
var selectedViews = data.Where(d => d.isSelected == true);
foreach (var selected in selectedViews)
{
//selected.Id;
//selected.RadioValue;
}
System.Diagnostics.Debugger.Break();
return View(data);
}
private IList<AdminViewModel> GenerateViews()
{
var output = new List<AdminViewModel>();
var rand = new Random();
for (var count = 1; count <= 10; ++count)
{
var newView = new AdminViewModel();
newView.Id = count;
newView.Name = "Name " + count.ToString();
newView.isSelected = false;
newView.RadioValue = rand.Next(1, 3);
output.Add(newView);
}
return output;
}
}
查看:
@model IList<WebMVC3.Controllers.AdminViewModel>
<h2>Index</h2>
@using (Html.BeginForm())
{
//foreach (var item in Model)
for(var index = 0; index < Model.Count; ++index)
{
<div>
@Html.HiddenFor(m => Model[index].Id)
<label>
@Html.CheckBoxFor(m => Model[index].isSelected, Model[index].isSelected)
@Model[index].Name
</label>
<label>
@Html.RadioButtonFor(m => Model[index].RadioValue, 1)
Primary
</label>
<label>
@Html.RadioButtonFor(m => Model[index].RadioValue, 2)
Secondary
</label>
</div>
}
<input type="submit" value="Save" />
}