C# ASP.NET MVC-正则表达式,错误:参数不能为null。参数名称:输入
在Tuple方法的第一行中,在表达式C# ASP.NET MVC-正则表达式,错误:参数不能为null。参数名称:输入,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,在Tuple方法的第一行中,在表达式Regex.Match中参数不能为空,参数名称:input给出错误。 我试过了,但解决不了这个问题。我如何解决它 public ActionResult Show(string idAndSlug) { var parts = SeperateIdAndSlug(idAndSlug); if (parts == null) return HttpNotFound(); v
Regex.Match
中<代码>参数不能为空,参数名称:input给出错误。
我试过了,但解决不了这个问题。我如何解决它
public ActionResult Show(string idAndSlug)
{
var parts = SeperateIdAndSlug(idAndSlug);
if (parts == null)
return HttpNotFound();
var post = Database.Session.Load<Post>(parts.Item1);
if (post == null || post.IsDeleted)
return HttpNotFound();
if (!post.Slug.Equals(parts.Item2, StringComparison.CurrentCultureIgnoreCase))
return RedirectToRoutePermanent("Post", new { id = parts.Item1, slug = post.Slug });
return View(new PostsShow
{
Post = post
});
}
private Tuple<int, string> SeperateIdAndSlug(string idAndSlug)
{
var matches = Regex.Match(idAndSlug, @"^(\d+)\-(.*)?$");
if (!matches.Success)
return null;
var id = int.Parse(matches.Result("$1"));
var slug = matches.Result("$2");
return Tuple.Create(id, slug);
}
公共操作结果显示(字符串idAndSlug)
{
var部分=单独的IDA和SLUG(IDA和SLUG);
if(parts==null)
返回HttpNotFound();
var post=Database.Session.Load(parts.Item1);
if(post==null | | post.IsDeleted)
返回HttpNotFound();
如果(!post.Slug.Equals(parts.Item2,StringComparison.CurrentCultureIgnoreCase))
返回RedirectToRoutePermanent(“Post”,new{id=parts.Item1,slug=Post.slug});
返回视图(新PostsShow)
{
职位=职位
});
}
私有元组分隔idAndSlug(字符串idAndSlug)
{
var matches=Regex.Match(idAndSlug,@“^(\d+)\-(.*)”;
如果(!matches.Success)
返回null;
var id=int.Parse(匹配.Result($1));
var slug=匹配。结果($2”);
返回Tuple.Create(id,slug);
}
确保den Show Action中的参数idAndSlug不为null,否则如果为null,则此操作将不起作用。只需确保参数不为null即可
public ActionResult Show(string idAndSlug)
{
if(idAndSlug == null)
throw new ArgumentNullException(nameof(idAndSlug));
//your code
}
或
是否确定操作方法中的
idAndSlug
不为空?
public ActionResult Show(string idAndSlug)
{
if(idAndSlug == null)
idAndSlug = "";
//your code
}