• 0

مشكلة في دخول الروابط في الـMVC

لدي موقع من صفحات بسيطة جداً للتجربة، وأنا مبتدئ في الـMVC، واجهتني مشكلة بعدم إمكانية دخول الروابط (anchors) فمثلاُ لدي هذه الصفحة موجودة في مجلد View داخل مجلد Home إسمها (Index.cshtml):
 

@{
    ViewBag.Title = "Index";
}
    <link rel="stylesheet" href="style.css" />
    <ul class="menu-bar">
        <li><a href="Index.cshtml">Home</a></li>
        <li><a href="About.cshtml">About</a></li>
        <li><a href="Services.cshtml">Services</a></li>
        <li><a href="Solutions.cshtml">Solutions</a></li>
        <li><a href="Contact.cshtml">Contact</a></li>
    </ul>
<h2>Sample MVC Web Application</h2>

ولدي في مجلد الـControlles ملف (HomeController.cs) وهذه محتوياته:
 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace Sample.Controllers
{
    public class HomeController : Controller
    {
        //
        // GET: /Home/

        public ActionResult Index()
        {
            return View();
        }
        public ActionResult About()
        {
            return View();
        }
        public ActionResult Service()
        {
            return View();
        }
        public ActionResult Solutions()
        {
            return View();
        }
        public ActionResult Contact()
        {
            return View();
        }

    }
}

عندما أشغل الموقع على متصفح جوجل كروم تظهر لي صفحة Index بشكل صحيح، ولكن عندما أضغط على الرابط على سبيل المثال (Contact الذي مساره Contact.cshtml) لا يعمل معي بل يظهر لي خطأ هكذا:
 

اقتباس

Server Error in '/' Application.


The resource cannot be found

علماً بأن محتويات صفحة Contact وجميع الصفحات الأخرى مشابهة 100% صفحة Index فقط الإختلاف الإسم من Index إلى الصفحة المعنية.
علماً أنني جربت إضافة كلمة home في مسار الصفحة الموجود في الـmenu-bar قبل إسم الصفحة في الرابط الخاص بها مثال ، (Home/Contact.cshtml) ، ولكن نفس الخطأ يظهر ، أعتذر عن جهلي في المعرفة، وشكراً لكم كثيراً على المساعدة :)

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 1

أنصحك أولا بالتأكد من صلاحيات الملفات والنظام ففي أغلب المشاكل المتعلقة بخوادم يكون سببها الصلاحيات.
بعد ذلك أنصحك بالتأكد من خصائص الصفحة الرئيسية في المشروع وذلك عن طريق الخطوات التالية:

  1. الضغط بالزر الأيمن للفأرة على مشروع mvc.
  2. اختيار "properties”.
  3. حدد علامة التبويب "Web” ثم اختار  “Specific Page”.
  4. إذا افترضنا أنك تملك متحكم (controller) يدعى HomeController وتابع عمل (action method) يدعى Index، ادخل "home/index" إلى حقل النص الموافق لزر الراديو (radio button) المسمى "Specific Page".

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 1

طبيعي أن يظهر لك هذا الخطأ والسبب هو أنك لم تقم بتعريف صفحة Contact.cshtml في ملف التوجيه RouteConfig.cs.

فأي صفحة View يتم إنشاؤها في MVC يجب أن يكون لديها رابط URL مقابل لها ويتم تعريف روابط الصفحات ضمن الملف RouteConfig.cs الموجود في المجلد App_Start كما في المثال التالي:

routes.MapRoute(
               name: "Contact",
               url: "{controller}/{action}",
               defaults: new { controller = "Home", action = "Contact" }
           );

حيث تقوم بتحديد اسم المتحكم Controller الذي يُرجع الصفحة في controller واسم الـ Action Method الخاصة بالصفحة View في action.

للمزيد راجع السؤال كيف أضيف الصفحات Views إلى جدول التوجيه في RouteConfig في MVC5؟

بالتوفيق

تمّ تعديل بواسطة Lujain

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

الرجاء المساعدة!

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن