MVC:不存在的行为

时间:2010-01-13 12:18:52

标签: c# asp.net-mvc

我还没有做过多少MVC,仍然在努力学习如何做事。

MVC 1和C#

问题 我想为客户提供链接,例如www.temp.com/redirects/cust100?id=123&url=www.nothere.com

从URL我知道它将转到“重定向”的控制器,但没有“cust100”的动作。我如何创建一个ActionResult(或其他东西)来获取动作,这样我就可以在数据库中查询它以检查它是否有效,然后在我的网站上重新路由它们呢?

如果我已经解释了myselft,请随时提出更多问题。

亲切的问候, 皮特

4 个答案:

答案 0 :(得分:3)

您的路线:

routes.MapRoute("Redirects",               
               "{controller}/{cust}",
                new {controller = "redirects", action = "Index", cust = "" });     

这会使您的网址通过将参数发送到索引方法作为默认操作来实现:

/redirects/cust100?id=123&url=www.nothere.com

您的控制器方法:

public ActionResult Index(string cust, int id, string url)     
{     
    // do some DB stuff
    return RedirectResult(url);
};

答案 1 :(得分:2)

您的代码尝试查找cust100操作的原因是您的网址与默认路由匹配:

routes.MapRoute(
  "Default",                                              // Route name
  "{controller}/{action}/{id}",                           // URL with parameters
  new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
); 

尝试在global.asax文件中此路由之前添加显式路由,如下所示:

routes.MapRoute(
  "Redirects",         // Route name
  "redirects/{foo}",  // URL with parameters
  new { controller = "Redirect", action = "Redirect", foo = "" }
); 

这会将表单/ redirects / abc123的任何网址映射到RedirectController.Redirect(string foo)方法,并将{cnc3(或其他)作为foo参数传入。

答案 2 :(得分:1)

您的网址格式应与Global.asax.cs中的网址格式相同。

"{controller}/{action}/..."

因此,您的网址可能需要更像:

"Redirect/ToCustomer/123"

其中Redirect是控制器,ToCustomer是所述控制器上的操作方法,“123”是提供给操作方法的“id”参数:

public class CustomerController : Controller
{
    public ActionResult ToCustomer(int id)
    {
        ...
    }
}

另一方面,为什么不在Detail上为他们提供CustomerController方法的网址。即:

"http://www.temp.com/Customer/Detail/123"

答案 3 :(得分:0)

您必须使用“RedirectResult”来表示重定向到新网址。

返回RedirectResult(url);

这可以解决您的问题。

以下列出的类型是ActionResult的可用派生词:

1 ContentResult - 表示文本结果

2 EmptyResult -Represent no result

3 FileResult - 表示可下载的文件(抽象类)

4 FileContentResult - 表示可下载的文件(包含二进制内容)

5 FilePathResult - 表示可下载的文件(带路径)

6 FileStreamResult - 表示可下载的文件(带有文件流)

7 HttpUnauthorizedResult - 表示未经授权的HTTP的结果 请求

8 JavaScriptResult - 表示JavaScript脚本

9 JsonResult - 表示可以的JavaScript对象表示法(JSON)结果 用于AJAX应用程序

10 RedirectResult - 表示重定向到新URL

11 RedirectToRouteResult - 表示执行重定向的结果 给出路线值字典

12 PartialViewResult -Base类用于将部分视图发送到响应

13 ViewResult -Represents HTML和markup

14 ViewResultBase -Base类用于将模型提供给视图然后呈现 对回应的看法

15 XmlResult - 将指定对象序列化为XML并输出的动作结果 它到响应流(由MvcContrib库提供)