У меня проблема с маршрутизацией MVC (или, по крайней мере, я думаю, что это с маршрутизацией :)) ...
Только что обновлен до MVC RC1, но я не уверен, что это связано, так как это моя первая попытка установить MapRoute и соответствующий RouteLink.
вот маршрут:
routes.MapRoute("Test1",
"Forecast/CurrentLineItems/{propertyID}/{forecastYear}/{forecastMonth}",
new { controller = "Forecast", action = "CurrentLineItems", propertyID = "", forecastYear = "", forecastMonth = "" }
);
вот RouteLink ... в представлении он обернут в ячейку таблицы:
Html.RouteLink(Html.Encode(myProperty.Description),"Test1", new { controller = "Forecast", action = "CurrentLineItems", propertyID = myProperty.PropertyID.ToString(), forecastYear = "2008", forecastMonth = "10" })
вот фрагмент из контроллера:
namespace AnApplication.Controllers
{
[HandleError]
[Authorize]
public class ForecastController : Controller
{
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult CurrentLineItems(string propertyID, string forecastYear, string forecastMonth)
{
//Some code
}
Теперь для странного поведения, когда я нажимаю на ссылку, указанную RouteLink, приложение вводит метод CurrentLineItems, и все аргументы метода верны ...
затем он снова входит в метод CurrentLineItems!
например, с такими аргументами:
propertyID = "scripts"
forecastYear = "jquery-1.2.6.js"
forecastMonth = ""
Затем он повторяет это несколько раз, поскольку кажется, что он запускает все сценарии в этом представлении и Site.Master, а затем последний файл .css для этой страницы!
Что происходит!
Стек вызовов не помогает, поскольку в нем перечислен вышеупомянутый метод CurrentLineItems, а затем ниже страшный [Внешний код]
Когда я профилирую страницу / представление в FireFox / FireBug, все, что я вижу, это вызовы jQuery
Вот HTML-код с сайта. Основные сценарии
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title><%= Html.Encode(ViewData["Title"]) %></title>
<script type="text/javascript" src="../../scripts/jquery-1.2.6.js"></script>
<script type="text/javascript" src="../../scripts/calculations.js"></script>
<script type="text/javascript" src="../../scripts/common.js"></script>
<style media="all" type="text/css">@import "../../Content/all.css";</style>
<!--[if IE]><link rel="stylesheet" type="text/css" href="../../Content/ie.css"media="screen"/><![endif]-->
<!--<link href="../../Content/Site.css" rel="stylesheet" type="text/css" />-->
</head>
вот фрагмент из представления о сценариях
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master"AutoEventWireup="true" CodeBehind="CurrentLineItems.aspx.cs" Inherits="AnApplication.Views.Forecast.CurrentLineItems" %>
<asp:Content ID="lineItemsContent" ContentPlaceHolderID="MainContent" runat="server">
<!--<script type="text/javascript" src="../../scripts/MicrosoftAjax.debug.js"></script>-->
<script type="text/javascript" src="../../scripts/lineItems.js"></script>
<script type="text/javascript" src="../../Scripts/jquery.formatCurrency.js"></script>
<!--<script type="text/javascript" src="../../scripts/jquery-1.2.6.min.js"></script>-->
Обратите внимание, что этот ActionLink работает нормально (в основном это просто пункт меню, используемый для тестирования, и три аргумента задаются в коде внутри контроллера ...):
<%= Html.ActionLink("Line Items", "CurrentLineItems", "Forecast")%>
Любая помощь в решении этой проблемы очень ценится.
Спасибо
Грег