我基本上有几个输入字段,共享相同的最后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结尾的表单元素而不是多余的代码块?谢谢大家!
发布于 2011-05-29 12:12:02
如下所示:
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();发布于 2011-05-29 12:13:30
您可以将所有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;
}
}https://stackoverflow.com/questions/6165881
复制相似问题