基本上我的枚举值确定你的页面(在网址中)并且我有下面的“if”语句来覆盖这种情况,如果用户在网址中输入了一段文本,则默认为“新”。 ....如果我输入除Enum值以外的任何数字,则显示该数字而不是默认的“新”页面。
我不想发布大量代码,所以希望它很清楚,如果在URL中输入文本,它会正确重定向,但不能用于非枚举值。有没有办法检查Url输入是否与枚举值匹配?
的ActionResult
[HttpGet]
public ActionResult Index(string status, string message)
{
var referralStatus = ReferralStatus.New;
if (!Enum.TryParse(status, out referralStatus))
{
referralStatus = ReferralStatus.New;
}
var model = new ReferralsModel();
model.Status = referralStatus.ToString();
model.ReferralsCount.Status = referralStatus.ToString();
return View(model);
}
登陆索引页面时的网址显示为.. 项目/推荐, 选择页面上的标签后,您的网址会显示... 项目/推荐?状态= 2, 在网址中输入不同数字时的网址 project / Refferals?status = 56473, 您的视图使用这些数字代替枚举状态值进行渲染。
请注意这是一个asp.net mvc 4应用程序
答案 0 :(得分:0)
编辑:如评论中所述,您可以使用Enum.IsDefined
来解析Enum的int表示
if (!Enum.TryParse(status, out referralStatus))
应该是
if (!Enum.TryParse(status, out referralStatus) || !Enum.IsDefined(typeof(ReferralStatus),referralStatus))
根据您的评论,也许您可以尝试以下方式:
ReferralStatus referralStatus;
try{
referralStatus = (ReferralStatus) int.Parse(status);
}
catch{
status = ((int)ReferralStatus.New).ToString();
referralStatus = ReferralStatus.New;
}