اذهب إلى المحتوى

السؤال

نشر

لدي موقع من صفحات بسيطة جداً للتجربة، وأنا مبتدئ في الـ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) ، ولكن نفس الخطأ يظهر ، أعتذر عن جهلي في المعرفة، وشكراً لكم كثيراً على المساعدة :)

Recommended Posts

  • 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

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...