C# mvc @Html.RadioButtonFor 传值问题

weixin_32712737 2017-07-09 05:05:05
我现在帮一个在线自动打分的程序,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);
}
...全文
507 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
正怒月神 2017-07-11
  • 打赏
  • 举报
回复
复杂模型,尤其是嵌套模型,通过submit提交的话,需要设定name[下标] ajax的话,Json会方便点 http://blog.csdn.net/hanjun0612/article/details/51918059
  • 打赏
  • 举报
回复
你这循环生成的单选题,应该要在页面通过js先进行数据处理,然后再通过ajax传递到mvc的Controller
weixin_32712737 2017-07-11
  • 打赏
  • 举报
回复
引用 2 楼 sp1234 的回复:
贴出你的 http 消息调试信息,看看 Request 文本是什么东西。不要贴一堆 asp.net 代码。
我的QQ号3356559508
weixin_32712737 2017-07-10
  • 打赏
  • 举报
回复
我是新手,可以加我QQ吗?3356559508
  • 打赏
  • 举报
回复
贴出你的 http 消息调试信息,看看 Request 文本是什么东西。不要贴一堆 asp.net 代码。
weixin_32712737 2017-07-09
  • 打赏
  • 举报
回复

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧