如何验证'int?'参数,以避免控制器页面出现异常
本文关键字:控制器 异常 何验证 验证 参数 int | 更新日期: 2023-09-27 18:17:42
我想创建一个类来验证不同的输入。
在Controller中,我有一个简单的ActionResult方法类型。
public ActionResult Detail( int? id ) {
ViewData["value"] = _something.GetValueById( id );
return View();
}
如果你导航到http://localhost/Home/Detail/3
,然后控制器返回视图,它显示可用的值通过id(它是整数)从模型。
如果ID为null,则控制器将我重定向到所有值。
如果更改ID路由(如http://localhost/Home/Detail/3fx
)为不同的数据类型,则控制器返回红色页面。(有例外)
我想检查ID是否为int,以避免红页错误(带有异常列表)。
我看到isNaN
只适用于双数据类型。
很抱歉,如果我的问题是恼人的。
可以添加路由约束,强制ID
参数为有效整数
routes.MapRoute(
"MyRoute",
"Home/Details/{id}",
new {controller="Home", action="Details", id = UrlParameter.Optional},
new {id = @"'d+" }
);
如果我正确理解了你的例子,那么你不能在ID到达你的Detail函数之前检查它的类型,对吗?
在这种情况下,我将改变你的"int?Id"改为"对象Id"。然后可以检查函数本身的对象类型。类似…
public ActionResult Detail(object id)
{
int myID;
if (int.TryParse(id.ToString(), out myID))
{
ViewData["value"] = _discipline.GetValueById(id);
return View();
}
}
这可能有帮助
string Str = textBox1.Text.Trim();
double Num;
bool isNum = double.TryParse(Str, out Num);
if (isNum)
MessageBox.Show(Num.ToString());
else
MessageBox.Show("Invalid number");
查看此链接http://social.msdn.microsoft.com/forums/en us/winforms/thread/84990ad2 - 5046 - 472 - b - b103 f862bfcd5dbc/