6

次のルートがあります。

routes.MapRoute("Event Overview", "{city}/{type}/{id}",
                            new {city="LA", controller = "BaseEvent", action = "EventOverview"}, new {city = new CityConstraint()});

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

そして、私のサイトのいくつかのリンク:

@Html.ActionLink("Make", "EventOverview", "BaseEvent", new { id = eventInfo.Key.OID, type = eventInfo.Key.XPObjectType.TypeName.GetShortTypeName(), activeTab = "#scheduleLink", session = eventInfo.Key.EventSchedules[0].SessionId, hall = eventInfo.Key.EventSchedules[0].HallId, client = eventInfo.Key.EventSchedules[0].BasePlace.PremieraClientId}, null)

@Html.ActionLink("Make", "EventOverview", "BaseEvent", new { id = eventInfo.Key.OID, type = eventInfo.Key.XPObjectType.TypeName.GetShortTypeName(), activeTab = "#scheduleLink",  }, null)

これは `EventOverview アクションです:

 public ActionResult EventOverview(int id, string type, string activeTab,string hall, string session, string client, string count)
        {
            var model = CreateEventViewData<EventViewData>(id, type);
            model.ActiveTab = activeTab;
            model.ScheduleCount = count;
            model.SessionId = session;
            model.HallId = hall;
            model.ClientId = client;
            return View("Controls/EventsInfo/EventInfo", model);
        }

多くのパラメーターを渡す最初のリンクでは、すべてがブラウザーのアドレス フィールドに表示されます。
これは最初のリンク用です。

http://localhost:62291/LA/Film/36?activeTab=%23scheduleLink&session=15&hall=65&client=2&count=1

これは 2 番目のリンクです。

http://localhost:62291/LA/Film/36?activeTab=%23scheduleLink

私はそのようなものが欲しい:

http://localhost:62291/LA/Film/36

アドレス行のパラメーターを非表示にする方法は?

アップデート:

$(document).ready(function () {
        var link = $(".btn_buy_ticket").find("a").click(function (e) {
            e.preventDefault();            
            $.post($(this).attr("href"));
        });
    })

[HttpPost]
        public ActionResult EventOverview(int id) // just for test
        {
            return RedirectToAction("EventOverview", new {id = id});
        }

        public ActionResult EventOverview(int id, string type, string activeTab,string hall, string session, string client, string count)
        {
            var model = CreateEventViewData<EventViewData>(id, type);
            model.ActiveTab = activeTab;
            model.ScheduleCount = count;
            model.SessionId = session;
            model.HallId = hall;
            model.ClientId = client;
            return View("Controls/EventsInfo/EventInfo", model);
        }

すべてのアクションが呼び出されますが、 EventInfoビューが読み込まれません。

4

3 に答える 3

5

GET の代わりに POST を使用できます。したがって、リンクを、クエリ文字列に表示したくないパラメーターの非表示フィールドを含むフォームに置き換えることができます。

@using (Html.BeginForm("EventOverview", "BaseEvent", new { id = eventInfo.Key.OID, type = eventInfo.Key.XPObjectType.TypeName.GetShortTypeName() }, FormMethod.Post, null))
{
    @Html.Hidden("activeTab", "#scheduleLink")
    @Html.Hidden("session", eventInfo.Key.EventSchedules[0].SessionId)
    @Html.Hidden("hall", eventInfo.Key.EventSchedules[0].HallId)
    @Html.Hidden("client", eventInfo.Key.EventSchedules[0].BasePlace.PremieraClientId)
    <button type="submit">Make</button>
}
于 2012-04-19T05:57:44.753 に答える
0

URL パラメータを非表示にする方法

URL パラメーターを非表示にする場合は、デバッグ プロパティに移動し、radiobuttonオプションを選択して特定のページを指定します。

http://localhost:61757/TicketDataUpload/templateupload?projectid=6497&userid=7336

これはパラメーター URL です。このように隠したい場合:

http://localhost:61757/Controller/index

ページを開いたときに URL パラメータが表示されないため、特定のページを挿入する必要があります。

于 2014-09-17T13:04:59.157 に答える