【问题标题】:C# mvc4 - direct URL to controllerC# mvc4 - 控制器的直接 URL
【发布时间】:2015-08-31 02:39:55
【问题描述】:

我有一个外部 URL,它直接指向我的控制器中的一个函数,但是当我第一次单击它时,我没有到达页面,而是进入了主页。但是,在第二次单击(以及以下单击)时,我可以到达所需的页面。

有什么我应该添加到我的函数或控制器中以允许在第一次点击时达到它吗?还是我的会话第一次没有初始化?我尝试调试,但第一次点击时我没有达到所需的功能。

这是指向我的控制器的外部 URL: http://localhost/careers/postings/index?pvnID=HC-1505-000533

这是来自控制器的方法:

public ActionResult Index(string pvnID)
    {

        //if pvnid matches legacy PVN application pater -> refirect to legacy application
        Regex pattern = new Regex("[A-Z]{3}-\\d{3,4}");
        Match match = pattern.Match(pvnID);
        if (match.Success)
        {
         //redirect to legacy application
        }
        else 
        {
            model.Job = jobPostingMgr.GetJobPosting(pvnID);

            string maxSalary = "";
            string minSalary = "";

            if(model.Job.MaximumSalary.ToString() != "0.00"){
                maxSalary = String.Format("{0:C}", model.Job.MaximumSalary);
            }
            if (model.Job.MinimumSalary.ToString() != "0.00")
            {
                minSalary = String.Format("{0:C}", model.Job.MinimumSalary);
            }

            if (maxSalary != "" && minSalary != "")
            {
                ViewBag.SalaryRange = minSalary + " - " + maxSalary;
            }
            else if (maxSalary == "" && minSalary != "")
            {
                ViewBag.SalaryRange = minSalary;
            }
            else if (maxSalary != "" && minSalary == "")
            {
                ViewBag.SalaryRange = maxSalary;
            }


            //data processing
            Session["category"] = model.Job.Category;
            model.Job.Category = miscInfoMgr.GetAJobCategory(model.Job.Category).Description;
            model.Job.CollegeCode = PvnHelper.GetCollege(model.Job.CollegeCode).Description;
            Session["pvnid"] = pvnID;


            //Change to lower case 
            model.Job.DisplayJobTitle = System.Threading.Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase(model.Job.DisplayJobTitle.ToLower());
            model.Job.Department = System.Threading.Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase(model.Job.Department.ToLower());
            model.Job.CollegeCode = System.Threading.Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase(model.Job.CollegeCode.ToLower());
        }
        return View(model);
    }

非常感谢您的帮助。

【问题讨论】:

  • 你有什么安全措施。
  • 请提供您的控制器的代码和该网址
  • 我将代码添加到原线程中

标签: c# asp.net-mvc-4 url redirect


【解决方案1】:

您可能忘记在 Html.ActionLink() 参数中指定控制器的名称。试试 Html.ActionLink("actionname","controllername");

【讨论】:

  • 我不使用 Html.AtrionLink()。这是一个指向应用程序控制器的纯 URL。
  • 可能是 MVC 路由映射没有对那种 url 的定义。如果您的 URL 是 localhost/postings/index?pvnID=asjdoia,则 MVC 将使用 Index(string pvnID) 查找 PostingController。为这种 url 注册新路由。
  • 我不必添加新路由,但发现如果会话未启动,应用程序将重定向到根目录。因此,为什么链接在第一次点击时不起作用,但随后会起作用。
  • 非常感谢乔恩的帮助 :)
猜你喜欢
  • 2013-09-22
  • 1970-01-01
  • 2016-10-02
  • 2012-05-19
  • 2013-01-05
  • 1970-01-01
  • 1970-01-01
  • 2013-01-03
  • 2016-08-22
相关资源
最近更新 更多