我基本上有几个输入字段,它们共享相同的最后3个字符,“Max”。它们都与它们所属的“div”标签不同。我现在拥有的代码块看起来很糟糕:
if (Convert.ToInt32(Request.Form["MCQMax"]) > 0)
{
TempData["Max"] = Convert.ToInt32(Request.Form["MCQMax"]);
}
else if (Convert.ToInt32(Request.Form["SAMax"]) > 0)
{
TempData["Max"] = Convert.ToInt32(Request.Form["SAMax"]);
}
else if (Convert.ToInt32(Request.Form["PLMCQMax"]) > 0)
{
TempData["Max"] = Convert.ToInt32(Request.Form["PLMCQMax"]);
}
else if (Convert.ToInt32(Request.Form["PLIFMax"]) > 0)
{
TempData["Max"] = Convert.ToInt32(Request.Form["PLIFMax"]);
}
else if (Convert.ToInt32(Request.Form["PLDMax"]) > 0)
{
TempData["Max"] = Convert.ToInt32(Request.Form["PLDMax"]);
}
如何传递以Max结尾的任何表单元素而不是拥有这个冗余的代码块?谢谢大家!!
答案 0 :(得分:1)
这样的事情:
var firstMaxFormKey = Request.Form.AllKeys
.Where(arg => arg.EndsWith("Max"))
.FirstOrDefault();
TempData["Max"] = Convert.ToInt32(Request.Form[firstMaxFormKey]);
<强> [编辑] 强>
对不起,我没有给予足够的重视。我认为这就是你所需要的:
var max = Request.Form.AllKeys
.Where(arg => arg.EndsWith("Max"))
.Select(arg => Convert.ToInt32(Request.Form[arg]))
.Where(arg => arg > 0)
.FirstOrDefault();
答案 1 :(得分:1)
您可以将所有ID放入数组中,然后循环遍历它们:
(未经测试的半伪代码)
IDs={"MCAMax",...}
for(int i=0; i<IDs.length; i++){
int theMax=Convert.ToInt32(Request.Form[IDs[i]]);
if ( theMax > 0){
TempData["Max"] = theMax;
break;
}
}