0

我是 Win8 和 ASP.net 开发的新手,我为任何缺乏清晰度或规范表示歉意,因为我是一名 3D 图形程序员,从事开发 ASP.net 后端系统。目标是与目标 Win8 应用程序通信,以使用用户(管理员)通过 ASP.net 网站输入的数据。

我遇到了多个障碍和死胡同,因为它是新的 Win8 技术和很少的可靠参考资料。

在 HomeController.cs 我试图调用:

 public ActionResult Admin()
    {

        string apiUri = Url.HttpRouteUrl("DefaultApi", new { controller = "testModel", });
        ViewBag.ApiUrl = new Uri(Request.Url, apiUri).AbsoluteUri.ToString();

        return View();
    }

这样我就可以启用路由到我的管理控制器。但是我在浏览器中得到以下输出:

http://i.imgur.com/WX34S.png

我正在使用从 Internet 下载的示例项目作为骨架框架,因为它包含 WebApiConfig.cs 文件,而生成新的 VS2012 ASP.NET MVC Web 应用程序项目不包含此文件,我相信我需要它我能够指定要序列化为 JSON 并删除 XML 格式的点。

我已经清理了 bin 中的 .DLL 文件并清理了 obj 文件夹,以防它引用不再存在的对象。

我创建了其他几个项目,一个使用从向导生成的 VS2012 MVC Web 应用程序项目,它实现:

 Url.RouteUrl

代替

 Url.HttpRouteUrl

但我确信这不会达到相同的效果,因为我想通过互联网将 http 从服务器通信到目标应用程序。如果我尝试使用后者,则会出错:

   'System.Web.Mvc.UrlHelper' does not contain a definition for 'HttpRouteUrl' and no extension method 'HttpRouteUrl' accepting a first argument of type 'System.Web.Mvc.UrlHelper' could be found (are you missing a using directive or an assembly reference?)

作为参考,这是我用来协助这部分项目的文章:

http://www.asp.net/web-api/overview/creating-web-apis/using-web-api-with-entity-framework/using-web-api-with-entity-framework,-part-4

感谢您的帮助(这与 OpenGL 和 DirectX 非常不同)

4

1 回答 1

3

因为这是一个标准的 MVC 控制器动作,而不是 ApiController 动作,所以这个控制器中的 Url 属性就是标准的UrlHelper

您可以使用以下内容:

public ActionResult Admin()
{
    string apiUri = Url.RouteUrl(
        "DefaultApi", 
        new { httproute = "", controller = "Values" }, 
        Request.Url.Scheme
    );
    ViewBag.ApiUrl = apiUri;
    return View();
}

请注意httproute = ""在 routeValues 参数中使用的 以及如何指定协议参数生成一个绝对 url,这样您就不需要通过创建新Uri对象和东西来调整..

于 2012-09-26T10:15:45.953 回答