1

ニュースのリストを表示するビューがあります。hrefタグがあり、Detailメソッドを呼び出してニュースIDを渡す必要があります。これで、URLにNews / Details?id=のようなクエリ文字列があります。 x ...しかし、ニュース/詳細/カテゴリ/何かのタイトル、ニュースカテゴリ、名前、IDなしのわかりやすいURLのようなものが必要です

これは私のアクションです、それは機能しますが、私はそのクエリ文字列を取得します

foreach (var item in Model)
{
    <a href='@Url.Action("Details", "News", new { id = item.newsId, category = item.categoryName, name = item.newsName })' title=""> Read More </a>
}

私はUrl.RouteUrlのようなもので試していました

 routes.MapRoute(
            name: "Details",
            url: "{controller}/{action}/{id}/{category}/{newsName}",
            defaults: new { controller = "News", action = "Details"}
        );

ただし、Details actionresultには移動しません。また、ニュースの詳細を表示するためにidパラメーターを渡す必要がありますが、わかりやすいURLに表示したくありません。私はそれを達成する方法を本当に混乱させました。前もって感謝します

4

4 に答える 4

0

使用する :

<a href='@Url.Action("Details", "News", new { id = item.newsId, category = item.categoryName, newsName = item.newsName })' title=""> Read More </a>
于 2013-03-22T03:57:02.193 に答える
0

最初のURLが正しい

<a href='@Url.Action("Details", "News", new { id = item.newsId, category = item.categoryName, newsName = item.newsName })' title=""> Read More </a>

ルートに関連する問題が発生した場合はいつでも、 RouteDebuggerを使用できます。

于 2013-03-22T08:05:49.097 に答える
0

これを試して:

@Html.RouteLink("Read More", "Details", new { action = "Details", id = item.newsId, category = item.categoryName, newsName = item.newsName })
于 2013-03-22T04:23:24.137 に答える
0

ルートが他のルートによって上書きされていないことを確認してください。したがって、ルートを最初にRoutConfig.csに配置します。コードを次のように変更します。

foreach (var item in Model)
{
    <a href='@Url.Action("Details", "News", new { id = item.newsId, category = item.categoryName, newsName = item.newsName })' title=""> Read More </a>
}//change name=item.newsName to newsName=item.newsName

また、ルーティングの詳細に従って、コントローラーに正しい署名があることを確認してください。

public class NewsController : Controller
{
    public ActionResult Details(int id, string category, string newsName )
}
于 2013-03-22T05:46:00.037 に答える