我想创建一个验证不同输入的类。
在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
仅适用于双数据类型。
很抱歉,如果我的问题很烦人。
答案 0 :(得分:7)
您可以添加route constraint以强制ID
参数为有效整数。
routes.MapRoute(
"MyRoute",
"Home/Details/{id}",
new {controller="Home", action="Details", id = UrlParameter.Optional},
new {id = @"\d+" }
);
答案 1 :(得分:1)
如果我正确理解了您的示例,那么在进入详细信息功能之前无法检查ID的类型,是否正确?
在这种情况下,我会将“int?id”更改为“object id”。然后,您可以检查函数本身中的对象类型。有点像...
public ActionResult Detail(object id)
{
int myID;
if (int.TryParse(id.ToString(), out myID))
{
ViewData["value"] = _discipline.GetValueById(id);
return View();
}
}
答案 2 :(得分:0)
这可能会有所帮助
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-472b-b103-f862bfcd5dbc/