我正在使用mvc4在asp.net中开发一个应用程序。我是asp.net的新手。以下是我的global.asax代码
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Default", action = "Index",
id = UrlParameter.Optional }
);
}
另外
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
}
我还有一个名为Default1Controller
的控制器,它有一个名为MyAction的动作方法。点击button
我希望此方法执行。但是虽然没有调试控件,但是没有调用该方法。以下是我的控制器代码
public class Default1Controller : Controller
{
//
// GET: /Default1/
public ActionResult Default1()
{
return View();
}
public ActionResult MyAction()
{
return View();
}
}
以下是cshtml @ { ViewBag.Title =“Default1”;
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Default1</h2>
<div>
<p>Welcome to the world of MVC!!!!</p>
<div>
<input type="button" value="Click Me"
onclick="window.location.href('@Url.Action("MyAction","Default1Controller")')" />
</div>
</div>
点击按钮,这是我得到的错误
2>'/'应用程序中的服务器错误。无法找到资源。 说明:HTTP 404.您要查找的资源(或其中一个依赖项)可能已被删除,名称已更改或暂时不可用。请查看以下网址,确保拼写正确。
请求的网址:/Default1Controller/MyAction
任何人都可以告诉我在哪里 我错了。任何帮助将受到高度赞赏。另外我想补充说我正在使用VS 2010.Net 4.0。
谢谢和问候
答案 0 :(得分:1)
尝试以下代码
<input type="button" value="Click Me" onclick="window.location.href('@Url.Action("MyAction","Default1")')" />
答案 1 :(得分:1)
使用Url.Action()
时,您不需要将“Controller”作为控制器名称的一部分包含在内,这适用于您将控制器名称作为字符串传递的任何位置:
此外,window.location.href不是函数,因此应使用=。
进行设置这应加载到正确的操作:
<input type="button" value="Click Me" onclick="window.location.href = '@Url.Action("MyAction","Default1")'" />
答案 2 :(得分:0)
window.location.href是一个属性而不是方法,所以你应该改变这样的代码:
onclick="window.location.href = '@Url.Content("~/Default1/MyAction")';"