簡體   English   中英

ASP.NET MVC-正則表達式,錯誤:參數不能為null。 參數名稱:輸入

[英]ASP.NET MVC - Regex, Error: Parameter can not be null. Parameter Name: input

在Tuple方法的第一行中,在表達式Regex.Match Parameter can not be null, Parameter name: 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);
    }

確保den Show Action中的參數idAndSlug不為null,否則如果為null則將不起作用。

只要確保該參數不為空即可。

public ActionResult Show(string idAndSlug)
{
    if(idAndSlug == null)
        throw new ArgumentNullException(nameof(idAndSlug));
    //your code
}

要么

public ActionResult Show(string idAndSlug)
{
    if(idAndSlug == null)
        idAndSlug = "";
    //your code
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM