MVC 数据的提交问题,望高手解答,在线等

yao991118 2010-09-09 11:09:26
代码:实体

public class Questions
{
/// <summary>
/// ID
/// </summary>
public Guid ID { get; set; }

/// <summary>
/// 题目
/// </summary>
public string Question { get; set; }

/// <summary>
/// 题目组
/// </summary>
public string group { get; set; }

/// <summary>
/// 类型(单选,多选)
/// </summary>
public string Type { get; set; }

/// <summary>
/// 选项A
/// </summary>
public string OptionsA { get; set; }

/// <summary>
/// 选项B
/// </summary>
public string OptionsB { get; set; }

/// <summary>
/// 选项C
/// </summary>
public string OptionsC { get; set; }
}


数据源

public class DataSource
{
public List<Questions> GetDataSource()
{
List<Questions> listQS = new List<Questions>();
Questions qs = new Questions();
qs.ID = Guid.NewGuid();
qs.Question = "1+1=?";
qs.Type = "单选题";
qs.OptionsA = "1";
qs.OptionsB = "2";
qs.OptionsC = "3";
qs.group = "题目1";
listQS.Add(qs);

Questions qs1 = new Questions();
qs1.ID = Guid.NewGuid();
qs1.Question = "2*2=?";
qs1.Type = "单选题";
qs1.OptionsA = "2";
qs1.OptionsB = "4";
qs1.OptionsC = "6";
qs1.group = "题目2";
listQS.Add(qs1);

Questions qs2 = new Questions();
qs2.ID = Guid.NewGuid();
qs2.Question = "世界上分两种人";
qs2.Type = "多选题";
qs2.OptionsA = "男人";
qs2.OptionsB = "女人";
qs2.OptionsC = "变态";
qs2.group = "题目3";
listQS.Add(qs2);

Questions qs3 = new Questions();
qs3.ID = Guid.NewGuid();
qs3.Question = "世界上分10种人";
qs3.Type = "多选题";
qs3.OptionsA = "懂2进制的";
qs3.OptionsB = "不懂2进制的";
qs3.OptionsC = "你妹";
qs3.group = "题目4";
listQS.Add(qs3);

return listQS;
}
}

页面

<div>
<%List<MvcApplication1.Models.Questions> Model = ViewData["Questions"] as List<MvcApplication1.Models.Questions>; %>
<%Html.BeginForm("GetAnswers", "Test", FormMethod.Post);
{ %>
<% if (Model != null)
foreach (var item in Model)
{ %>
<fieldset>
<p style="font-family: 黑体; font-size: x-large">
<%= Html.Encode(item.Type)%>
</p>
<p>
题目内容:
<%= Html.Encode(item.Question)%>
</p>
<%if (item.Type == "问答题")
{%>
<p>
<label for="Question">
请作答:</label>
<%= Html.TextArea("Answer", new { cols = 40, rows = 8 })%>
<%= Html.ValidationMessage("Answer")%>
</p>
<%} %>
<%if (item.Type == "单选题")
{%>
<%if (!String.IsNullOrEmpty(item.OptionsA))
{%>
<p>
A:<%= Html.Encode(item.OptionsA)%>
<%=Html.RadioButton(item.group, "A")%>
</p>
<%} %>
<%if (!String.IsNullOrEmpty(item.OptionsB))
{%>
<p>
B:<%= Html.Encode(item.OptionsB)%>
<%=Html.RadioButton(item.group, "B")%>
</p>
<%} %>
<%if (!String.IsNullOrEmpty(item.OptionsC))
{%>
<p>
C:<%= Html.Encode(item.OptionsC)%>
<%=Html.RadioButton(item.group, "C")%>
</p>
<%} %>
<%} %>
<%if (item.Type == "多选题")
{%>
<%if (!String.IsNullOrEmpty(item.OptionsA))
{%>
<p>
A:<%= Html.Encode(item.OptionsA)%>
<%=Html.CheckBox(item.group+"A")%>
</p>
<%} %>
<%if (!String.IsNullOrEmpty(item.OptionsB))
{%>
<p>
B:<%= Html.Encode(item.OptionsB)%>
<%=Html.CheckBox(item.group + "B")%>
</p>
<%} %>
<%if (!String.IsNullOrEmpty(item.OptionsC))
{%>
<p>
C:<%= Html.Encode(item.OptionsC)%>
<%=Html.CheckBox(item.group + "C")%>
</p>
<%} %>
<%} %>
<br />
</fieldset>
<% } %>
<p>
<input name="confirmButton" type="submit" value="提交答案" />
</p>
<%} %>
</div>

Controller:

public class TestController : Controller
{
/// <summary>
/// 题目View
/// </summary>
/// <returns></returns>
public ActionResult QuestionTest()
{
ViewData["Questions"] = new DataSource().GetDataSource();
return View();
}

/// <summary>
/// 提交的Action
/// </summary>
/// <returns></returns>
[AcceptVerbs(HttpVerbs.Post), ActionName("GetAnswers")]
public ActionResult GetAnswers()
{
string strResult = Server.UrlDecode(Request.Form.ToString());
return View();
}
}

在提交的Action方法里,怎么才能分别获取出用户提交的选项存入数据表xx里
数据表XX的样式:
Answerid(题目编号对应Guid ID ) Result(用户选择的答案)
...全文
164 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
手抓宝 2010-09-09
  • 打赏
  • 举报
回复
person=王二 对应你的答题人吧?
题目1=A&题目2=B&题目3=A 对应你选择的答案吧?

都写得很清楚了,拆分一下就可以了啊
yao991118 2010-09-09
  • 打赏
  • 举报
回复
这个问题就没有人能够回答吗?
yao991118 2010-09-09
  • 打赏
  • 举报
回复
获取到的strResult ="type=单选题&type=单选题&type=单选题&type=多选题&type=问答题&type=问答题&person=王二&person=王二&person=王二&person=王二&person=王二&person=王二&sID=1&sID=43&sID=49&sID=44&sID=45&sID=50&题目1=A&题目2=B&题目3=A&题目4A=true&题目4A=false&题目4B=true&题目4B=false&题目4C=false&题目4D=false&Answer=法萨芬&Answer=防守打法&confirmButton=提交答案"
string strResult = Server.UrlDecode(Request.Form.ToString());
claymore1114 2010-09-09
  • 打赏
  • 举报
回复
List提交 没弄过,帮顶
夺命胖子 2010-09-09
  • 打赏
  • 举报
回复

dictionary<Guid,string> answerList=new dictionary<Guid,string>();

List<MvcApplication1.Models.Questions> Model = ViewData["Questions"] as List<MvcApplication1.Models.Questions>;
foreach(MvcApplication1.Models.Questions item in Model)
{
if (item.Type == "问答题")
{
answerList.Add(item.ID,Request.Form["Answer"]);
}
if(item.Type == "单选题")
{
answerList.Add(item.ID,Request.Form[item.group]);
}
if(item.Type == "多选题")
{
List<string> chks=new List<string>();
//先判断是否选中
chks.Add(Request.Form[item.group+"A"]);
chks.Add(Request.Form[item.group+"B"]);
chks.Add(Request.Form[item.group+"C"]);
answerList.Add(item.ID,string.Join(",",chks.ToArray()));
}
}


手写的,MVC不熟,看看思路
yao991118 2010-09-09
  • 打赏
  • 举报
回复
麻烦高手解答下吧。。。
Canny 2010-09-09
  • 打赏
  • 举报
回复
我不知道 帮忙顶一下!
myhope88 2010-09-09
  • 打赏
  • 举报
回复
没弄过,帮顶下,顺便学习下
yao991118 2010-09-09
  • 打赏
  • 举报
回复
谢谢大家的帮助,我的问题解决了!
jarod0407 2010-09-09
  • 打赏
  • 举报
回复
可以在Action的方法的参数中加上参数
FormCollection collection
,用FormCollection 来取得页面上的值,或者可以直接使用Request.Form[变量名]如Request.Form["id"]来取得提交的页面上的值。
zthsn 2010-09-09
  • 打赏
  • 举报
回复
后台的action需要传一个model进去 ,model里面自然就会有值,然后在方法里面给这个model的值拿出来处理
夺命胖子 2010-09-09
  • 打赏
  • 举报
回复

<div>
<%List<Question.Models.QuesModel> Model = TempData["Questions"] as List<Question.Models.QuesModel>; %>
<%Html.BeginForm("Answer", "Home", FormMethod.Post);
{ %>
<% if (Model != null)
foreach (var item in Model)
{ %>
<fieldset>
<p style="font-family: 黑体; font-size: x-large">
<%= Html.Encode(item.Type)%>
</p>
<p>
题目内容:
<%= Html.Encode(item.Question)%>
</p>
<%if (item.Type == "问答题")
{%>
<p>
<label for="Question">
请作答:</label>
<%= Html.TextArea(item.ID.ToString(), new { cols = 40, rows = 8 })%>
<%= Html.ValidationMessage(item.ID.ToString())%>
</p>
<%} %>
<%if (item.Type == "单选题")
{%>
<%if (!String.IsNullOrEmpty(item.OptionsA))
{%>
<p>
A:<%= Html.Encode(item.OptionsA)%>
<%=Html.RadioButton(item.group, "A")%>
</p>
<%} %>
<%if (!String.IsNullOrEmpty(item.OptionsB))
{%>
<p>
B:<%= Html.Encode(item.OptionsB)%>
<%=Html.RadioButton(item.group, "B")%>
</p>
<%} %>
<%if (!String.IsNullOrEmpty(item.OptionsC))
{%>
<p>
C:<%= Html.Encode(item.OptionsC)%>
<%=Html.RadioButton(item.group, "C")%>
</p>
<%} %>
<%} %>
<%if (item.Type == "多选题")
{%>
<%if (!String.IsNullOrEmpty(item.OptionsA))
{%>
<p>
A:<%= Html.Encode(item.OptionsA)%>
<%=Html.CheckBox(item.group+"A")%>
</p>
<%} %>
<%if (!String.IsNullOrEmpty(item.OptionsB))
{%>
<p>
B:<%= Html.Encode(item.OptionsB)%>
<%=Html.CheckBox(item.group + "B")%>
</p>
<%} %>
<%if (!String.IsNullOrEmpty(item.OptionsC))
{%>
<p>
C:<%= Html.Encode(item.OptionsC)%>
<%=Html.CheckBox(item.group + "C")%>
</p>
<%} %>
<%} %>
<br />
</fieldset>
<% } %>
<p>
<input name="confirmButton" type="submit" value="提交答案" />
</p>
<%} %>
</div>


public ActionResult Question()
{
List<QuesModel> listQS = new List<QuesModel>();
QuesModel qs = new QuesModel();
qs.ID = Guid.NewGuid();
qs.Question = "1+1=?";
qs.Type = "单选题";
qs.OptionsA = "1";
qs.OptionsB = "2";
qs.OptionsC = "3";
qs.group = "题目1";
listQS.Add(qs);

QuesModel qs1 = new QuesModel();
qs1.ID = Guid.NewGuid();
qs1.Question = "2*2=?";
qs1.Type = "单选题";
qs1.OptionsA = "2";
qs1.OptionsB = "4";
qs1.OptionsC = "6";
qs1.group = "题目2";
listQS.Add(qs1);

QuesModel qs2 = new QuesModel();
qs2.ID = Guid.NewGuid();
qs2.Question = "世界上分两种人";
qs2.Type = "多选题";
qs2.OptionsA = "男人";
qs2.OptionsB = "女人";
qs2.OptionsC = "变态";
qs2.group = "题目3";
listQS.Add(qs2);

QuesModel qs3 = new QuesModel();
qs3.ID = Guid.NewGuid();
qs3.Question = "世界上分10种人";
qs3.Type = "多选题";
qs3.OptionsA = "懂2进制的";
qs3.OptionsB = "不懂2进制的";
qs3.OptionsC = "你妹";
qs3.group = "题目4";
listQS.Add(qs3);
TempData["Questions"] = listQS;
return View();
}

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Answer(FormCollection fc)
{
Dictionary<Guid, string> answerList = new Dictionary<Guid, string>();
List<QuesModel> ques = TempData["Questions"] as List<QuesModel>;
foreach (QuesModel item in ques)
{
if (item.Type == "问答题")
{
if (!string.IsNullOrEmpty(Request.Form[item.ID.ToString()]))
{
answerList.Add(item.ID, Request.Form[item.ID.ToString()]);
}
continue;
}
if (item.Type == "单选题")
{
if (!string.IsNullOrEmpty(Request.Form[item.group]))
{
answerList.Add(item.ID, Request.Form[item.group]);
}
continue;
}
if (item.Type == "多选题")
{
List<string> chks = new List<string>();
if (!string.IsNullOrEmpty(Request.Form[item.group + "A"]) && Request.Form[item.group + "A"].Contains("true"))
{
chks.Add("A");
}
if (!string.IsNullOrEmpty(Request.Form[item.group + "B"]) && Request.Form[item.group + "B"].Contains("true"))
{
chks.Add("B");
} if (!string.IsNullOrEmpty(Request.Form[item.group + "C"]) && Request.Form[item.group + "C"].Contains("true"))
{
chks.Add("C");
}
answerList.Add(item.ID, string.Join(",", chks.ToArray()));
continue;
}

}
return View();
}
yao991118 2010-09-09
  • 打赏
  • 举报
回复
我需要拆分出每个题的sID,和sID对应的题目的答案,然后循环的存入另一个数据表
yao991118 2010-09-09
  • 打赏
  • 举报
回复
就是不好拆分喽
假如有六个题,三个单选题,一个多选题,两个问答题,得到的选项strResult ="type=单选题&type=单选题&type=单选题&type=多选题&type=问答题&type=问答题&person=王二&person=王二&person=王二&person=王二&person=王二&person=王二&sID=1&sID=43&sID=49&sID=44&sID=45&sID=50&题目1=A&题目2=B&题目3=A&题目4A=true&题目4A=false&题目4B=true&题目4B=false&题目4C=false&题目4D=false&Answer=法萨芬&Answer=防守打法&confirmButton=提交答案"
我就没有想到怎么拆分,出来的type有六个,person有六个,sID也有六个,剩下的就不是规则的了

62,254

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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