چجوری عنوان یک پست رو بهمراه آی.دی اون رو توی یو.آر.ال جا بدم؟
درود
من از روش زیر برای روتینگ وبسایتم استفاده کردم
حالا میخوام وقتی یک پست رو لود میکنم توی یو.ار.ال همراه با آی.دی پست تایتل پست رو هم قرار بدم.چطور میتونم این کار رو بکنم؟سپاس
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapMvcAttributeRoutes();
}
}
[Route("home")]
public class HomeController : Controller
{
//نمایش پست
[Route("loadpost/{id}")]
public ActionResult ShowPost(int id)
{
اینم کدهای ویو
<h3>@Html.ActionLink(Model.oPost.Tittle, "ShowPost", "Home", new {id = Model.oPost.ID }, null)</h3>
نقل قول: چجوری عنوان یک پست رو بهمراه آی.دی اون رو توی یو.آر.ال جا بدم؟
اول باید روت رو تنظیم کنید :
[Route("loadpost/{id}/{title}")]
public ActionResult ShowPost(int id)
{
دوم باید مقدار title رو در لینک به عنوان routeValue پاس بدید
<h3>@Html.ActionLink(Model.oPost.Tittle, "ShowPost", "Home", new {id = Model.oPost.ID,title=Model.oPost.Tittle }, null)</h3>
1 ضمیمه
نقل قول: چجوری عنوان یک پست رو بهمراه آی.دی اون رو توی یو.آر.ال جا بدم؟
نقل قول:
نوشته شده توسط
hakim22
اول باید روت رو تنظیم کنید :
[Route("loadpost/{id}/{title}")]
public ActionResult ShowPost(int id)
{
دوم باید مقدار title رو در لینک به عنوان routeValue پاس بدید
<h3>@Html.ActionLink(Model.oPost.Tittle, "ShowPost", "Home", new {id = Model.oPost.ID,title=Model.oPost.Tittle }, null)</h3>
اتفاقا همین کار رو امتحان کرده بودم.منتهی توی پارمترهای اکشن هم مقدار title رو وارد کرده بودم.الان هم کاری که شما گفتید رو انجام دادم اما در دو حالت خطای زیر رو داد
ضمیمه 148400
ببینید من میخوام ادرس دهی یه چیزی مانند زیر بشه یعنی حتی نام اکشن هم نوشته نشه:
www.mysite/Titlepost
یا بصورت زیر
www.mysite/MenuName/SubMenu/TitlePost
نقل قول: چجوری عنوان یک پست رو بهمراه آی.دی اون رو توی یو.آر.ال جا بدم؟
مطلب بسیار عالی و خوب است
2 ضمیمه
نقل قول: چجوری عنوان یک پست رو بهمراه آی.دی اون رو توی یو.آر.ال جا بدم؟
درود
ایراد بخاطر یه سری بی دقتی از جانب خودم بود که حل شد
اینام کدهای درست :
منو:
// بارگزاری پست ها براساس منو
[Route("{mnu}/{id}")]
public ActionResult GetMenu(int id,int page=1)
{
if (id==0)
{
ViewBag.Error = "نشانی درخواست شده یافت نشد!";
return View("~/Views/Home/ErrorPage.cshtml");
}
PostRepository rpPost = new PostRepository();
CommentRepository rpCmnt = new CommentRepository();
WmHomePage oModel = new WmHomePage();
List<Post> pst = rpPost.Select().ToList();
oModel.CarentPage = page;
oModel.posts = pst.Where(x => x.id_menu == id && x.Is_show==true).OrderByDescending(d => d.Date).ThenByDescending(t => t.Time).Skip((page - 1) * 10).Take(10).ToList();
oModel.TotalItemPost = oModel.posts.Where(x => x.Is_show == true).Count();
oModel.AtachPosts = pst.Where(x => x.FileName != "" && x.Is_show==true).OrderBy(d => d.Date).ThenBy(t => t.Time).Take(3).ToList();
oModel.TopViewPosts = pst.Where(x=>x.Is_show==true).OrderByDescending(s => s.Views).ThenByDescending(d => d.Date).ThenBy(t => t.Time).Take(4).ToList();
oModel.comments = rpCmnt.Where(x => x.Is_show == true).OrderBy(d => d.Date).ThenBy(t => t.Time).Take(5).ToList();
return View(oModel);
}
//--------------------------------
// بارگزاری پستها براساس زیر منو
[Route("{mnu}/{sb}/{id}")]
public ActionResult GetSubMenu(int id, int page=1)
<ul class="ul-main">
@foreach (var item in Model)
{
if (item.Parent == 0)
{
<li class="li-main">
<a href="@Url.Action("GetMenu", "Home", new { id = item.ID, mnu=item.Url }, null)"><i class="@item.Icon"></i> @item.Name </a>
<ul class="ul-sub">
@foreach (var sub in Model)
{
if (sub.Parent == item.ID)
{
<li class="li-sub">
<a href="@Url.Action("GetSubMenu", "Home", new { id = sub.ID,mnu=item.Url,sb=sub.Url }, null)">@sub.Name </a>
</li>
}
}
</ul>
</li>
}
}
</ul>
ضمیمه 148403
پست:
//نمایش پست
[Route("{mnu}/{sb}/{ttl}/{id}")]
public ActionResult ShowPost(int id)
{
<h3>@Html.ActionLink(item.Tittle, "ShowPost", "Home", new { id = item.ID,ttl=item.Tittle,mnu=urlmnu,sb=urlsub },null)</h3>
ضمیمه 148404
فقط همینجور که می بینید توی یوآرال پست چون سرنام(عنوان) پست فارسی هست آی.دی پست قبل از سرنام درج شده.آیا راهی هست مانند ترتیبی که توی اکشن مشخص کردم آی.دی بعد از سرنام در یوآرال درج شه.(سرنام فارسی باشه)؟
نقل قول: چجوری عنوان یک پست رو بهمراه آی.دی اون رو توی یو.آر.ال جا بدم؟
خطای Ambiguous یعنی دو متد دارید که یک ساختار دارن و MVC نمیدونه کدوم رو اجرا کنه.
[Route("loadpost/{id}/{title}")]
public ActionResult ShowPost(int id,string title)
{