获取以“Max”作为ID名称的所有表单元素
问题描述:
我基本上有几个输入字段共享最后3个字符“Max”。它们都与它们所属的“div”标签不同。我现在所拥有的代码块看起来很可怕:获取以“Max”作为ID名称的所有表单元素
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"]);
}
我如何通过在与最大一端有代码谢谢你们这种冗余区间,而不是任何形式的元素!?
答
事情是这样的:
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();
答
你可以把所有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;
}
}
尝试此, 感谢回复! – 2011-05-29 04:17:38
@ValianthX - 我用一个更好的代码示例更新了我的答案。希望这是你真正需要的。 – 2011-05-29 04:30:02