C# mvc @Html.RadioButtonFor 传值问题
我现在帮一个在线自动打分的程序,model
using BrnMall.Core;
using BrnMall.Services;
using BrnMall.Web.Framework;
namespace BrnMall.Web.MallAdmin.Models
{
public class ExamModel
{
public int classID { get; set; }
/// <summary>
/// 描述
/// </summary>
public string Name { get; set; }
public DateTime CreateDate { get; set; }
public string url { get; set; }
public int ecount { get; set; }
}
public class ExamListModel
{
public PageModel PageModel { get; set; }
/// <summary>
/// 广告位置列表
/// </summary>
public List<ExamInfo> ExamList { get; set; }
}
public class ExamshowListModel
{
public PageModel pageModel;
public int classID { get; set; }
public int Id { get; set; }
public List<AnswerInfo> showanlist { get; set; } //回答问题的列表
/// <summary>
/// 描述
/// </summary>
public string Name { get; set; }
public string url { get; set; }
public int ecount { get; set; }
public List<ExercisesInfo> ExercisesList { get; set; }//题目列表
}
}
View
@model BrnMall.Web.MallAdmin.Models.ExamshowListModel
@section header{
<title>进入查看详情</title>
<link type="text/css" rel="stylesheet" href="/admin_mall/content/css/site.css"/>
<script type="text/javascript" src="/admin_mall/scripts/jquery.js"></script>
<link href="/admin_mall/content/css/uploadify.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="/admin_mall/scripts/jquery.validate.js"></script>
<script type="text/javascript" src="/admin_mall/scripts/jquery.validate.unobtrusive.js"></script>
}
@section body{
<h1 class="rightH1">
>>
<div class="right">
<a href="@Html.Raw(ViewData["referer"].ToString())" class="menuBT"><img src="/admin_mall/content/images/goback.jpg"/>返回列表</a>
<div class="clear"></div>
</div>
<div class="clear"></div>
</h1>
@using (Html.BeginForm())
{
@Html.HiddenFor(m => m.Id)
@Html.HiddenFor(m => m.classID)
@Html.HiddenFor(m => m.Name)
@Html.HiddenFor(m => m.ecount)
<div class="addTable">
<table width="100%">
<tr>
<td width="86px" align="right">题目:</td>
<td>@Html.TextBoxFor(x => x.Name, new { @class = "input", size = "35" })@Html.ValidationMessageFor(x => x.Name)</td>
</tr>
@for (int i = 0; i <= Model.ExercisesList.Count-1;i++ )
{
ExercisesInfo info = new ExercisesInfo();
info = Model.ExercisesList[i];
AnswerInfo aninfo = new AnswerInfo();
aninfo = Model.showanlist[i];
@Html.HiddenFor(m => m.ExercisesList[i].id)
@Html.HiddenFor(m => m.showanlist[i].Id)
<tr>
<td align="right">题目:</td>
<td>@info.title</td>
</tr>
if (info.type == 1)
{
//单选
<tr>
<td align="right">A:</td>
<td>@Html.RadioButtonFor(m => m.showanlist[i].A, Model.showanlist[i].Id, new { @id = Model.showanlist[i].Id.ToString(), @name = Model.showanlist[i].Name.ToString() })
@Html.ValidationMessageFor(m => m.showanlist[i].A) @Model.ExercisesList[i].A</td>
</tr>
<tr>
<td align="right">B:</td>
<td>@Html.RadioButtonFor(m => m.showanlist[i].A, aninfo.Id, new { @id = aninfo.Id.ToString(), @name = aninfo.Name.ToString() })
@Html.ValidationMessageFor(m => m.showanlist[i].A)@Model.ExercisesList[i].B</td>
</tr>
<tr>
<td align="right">C:</td>
<td>@Html.RadioButtonFor(m => m.showanlist[i].A, aninfo.Id, new { @id = aninfo.Id.ToString(), @name = aninfo.Name.ToString() })
@Html.ValidationMessageFor(m => m.showanlist[i].A)@Model.ExercisesList[i].C</td>
</tr>
<tr>
<td align="right">D:</td>
<td>@Html.RadioButtonFor(m => m.showanlist[i].A, aninfo.Id, new { @id = aninfo.Id.ToString(), @name = aninfo.Name.ToString() })
@Html.ValidationMessageFor(m => m.showanlist[i].A)@Model.ExercisesList[i].D</td>
</tr>
@Html.ValidationMessageFor(m => m.showanlist[i])
@Html.HiddenFor(m => m.showanlist[i])
}
else if (info.type == 2)
{//多选
<tr>
<td align="right">A:</td>
<td><input type="checkbox" value="@info.id" name=@info.id.ToString() />@info.A</td>
</tr>
<tr>
<td align="right">B:</td>
<td><input type="checkbox" value="@info.id" name=@info.id.ToString() />@info.B</td>
</tr>
<tr>
<td align="right">C:</td>
<td><input type="checkbox" value="@info.id" name=@info.id.ToString() />@info.C</td>
</tr>
<tr>
<td align="right">D:</td>
<td><input type="checkbox" value="@info.id" name=@info.id.ToString() />@info.D</td>
</tr>
}
else if (info.type == 3)
{//判断
<tr>
<td align="right">A:</td>
<td><input type="radio" value="@info.id" name=@info.id.ToString() />@info.A</td>
</tr>
<tr>
<td align="right">B:</td>
<td><input type="radio" value="@info.id" name=@info.id.ToString() />@info.B</td>
</tr>
}
else if (info.type == 4)
{//简答
<tr>
<td align="right">A:</td>
<td><input type="text" value="@info.id" name=@info.id.ToString() />@info.A</td>
</tr>
}
}
<tr>
@Html.HiddenFor(m => m.showanlist)
@Html.HiddenFor(m => m.ExercisesList)
<td align="right"> </td>
<td>
<a href="#" delurl="@Url.Action("showexam")" class="batch batchDel">提交</a>
<a href="" class="addBt" id="sumbitBut"><img src="/admin_mall/content/images/submit.jpg" /></a>
<script type="text/javascript">
$(function () {
$("#sumbitBut").click(function () {
$("form:first").submit();
return false;
})
});
</script>
</td>
</tr>
<tr>
<td align="right"> </td>
<td> </td>
</tr>
</table>
</div>
}
}
Controller
[HttpGet]
public ActionResult Edit(int storeRid = -1)
{
ExamInfo storeRankInfo = Exam.GetExamById(storeRid);
if (storeRankInfo == null)
return PromptView("试题不存在");
string url = storeRankInfo.url;
DataTable dt1 = new DataTable();
dt1.ReadXml(url);
//////////取出URL
////////URL生成题
ExamshowListModel model = new ExamshowListModel();
model.classID = storeRankInfo.classID;
model.Id = storeRankInfo.Id;
model.ecount = storeRankInfo.ecount;
List<ExercisesInfo> infolist=new List<ExercisesInfo>();
List<AnswerInfo> anlist = new List<AnswerInfo>();
foreach (DataRow row in dt1.Rows) {
ExercisesInfo info = new ExercisesInfo();
AnswerInfo aninfo = new AnswerInfo();
info.id = TypeHelper.ObjectToInt(row["Id"]);
info.type = TypeHelper.ObjectToInt(row["type"]);
info.title=row["title"].ToString();
info.A = row["A"].ToString();
info.B = row["B"].ToString();
info.C = row["C"].ToString();
info.D = row["D"].ToString();
info.answer = row["answer"].ToString();
aninfo.Id = info.id;
aninfo.Name = "N"+info.id.ToString();
infolist.Add(info);
anlist.Add(aninfo);
}
model.ExercisesList = infolist;
model.showanlist = anlist;
Load();
return View(model);
}
接受函数
public ActionResult Edit(ExamshowListModel model, int storeRid = -1)
{
int id = model.Id;
//这里的 model.showanlist.Count为0,无法收到结果。
for (int i = 0; i <= model.showanlist.Count-1;i++ ){
string s=model.showanlist[i].A;
}
Load();
return View(model);
}