2015-11-15 4 views
-1

Я создал страницу, которая показывает мне в таблице список из подключения к базе данных, и я хочу получить доступ к этой странице с другой страницы. Я создал ссылку, доступную с домашней страницы, но когда я ее нажал, она ничего не делает, это похоже на зарядку, но потом ничего. я покажу вам мой код:MVC Ссылка не доступна

домашний контроллер

using System.Web.Mvc; 
using MyShoppings.Repository; 
namespace MyShoppings.Controllers 
{ 
public class HomeController : Controller 
{ 
public ActionResult Index() 
{ 

     var toolList = ProductsRepository.GetAllTools(); 
     return View(toolList); 
} 

public ActionResult Tool() 
    { 
     var toolList = ProductsRepository.GetAllTools(); 
     return View(toolList); 
    } 


    } 
    } 

Маршрут Config:

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

namespace MyShoppings 
{ 
public class RouteConfig 
{ 
public static void RegisterRoutes(RouteCollection routes) 
{ 
routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 


routes.MapRoute(
      name: "Tools", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
     ); 
     routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = "Home", action = "Tool", id = UrlParameter.Optional } 
     ); 
    } 
} 
} 

мнение, инструмент:

@model List<Project.Models.Tool> 
@{ 
    ViewBag.Title = "Project"; 
} 

<h2>Tools</h2> 
(html code.....) 

индексном:

@{ 
ViewBag.Title = "Project"; 
} 

<a href="http://localhost:50536/ ">TOOL</a> 

Как мне сделать ссылку для доступа к табличным продуктам?

+0

Вы должны узнать, как работает маршрутизация. Ваша конфигурация маршрутизации неверна (маршрут по умолчанию бесполезен), и ваша ссылка должна использовать помощники маршрутизации (проверьте ответ Azim). https://msdn.microsoft.com/en-us/library/cc668201.aspx –

ответ

1

Попробуйте как follwoing

<a href="@Url.Action("Index","Home")">TOOL</a> 
+0

Открывает другую ссылку, но она говорит мне, что ресурс не найден. – Nero

+0

Вместо этого следует использовать имя контроллера и имя действия. Проверьте обновленный ответ. – Azim

+0

Спасибо. Моя ошибка была в том, что я написал «homeController» вместо og «home».: D – Nero

1

вы можете использовать для локального хоста ~ ... и

<a href="~/Home/Index" ></a> 
+0

'~' - это «корень сайта», а не «localhost». –

+0

Итак, вы можете использовать

0

Хорошо, это кратчайшее объяснение/пример, который я могу вам дать.

Просто придерживайтесь маршрутов по умолчанию на данный момент, вы помутняете проблему и создаете маршруты, которые делают то же самое.

routes.MapRoute(
    name: "Default", 
    url: "{controller}/{action}/{id}", 
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 

Аналогичным образом вы дублируете методы. Методы инструмента и индекса делают то же самое.

public ActionResult Index() 
{ 

    var toolList = ProductsRepository.GetAllTools(); 
    return View(toolList); 
} 

Я предполагаю, что вы хотите детали определенного инструмента. Я предполагаю, что это то, что вы хотите, чтобы ваш метод Инструмент сделал.

public ActionResult Details(int? id) 
{ 

    if(id == null) 
    { 
     return new HttpStatusCodeResult(HttpStatusCode.BadRequest); 
    } 
    Tool tool = ProductsRepository.Find(id); 
     if(product == null) 
     { 
      return HttpNotFound(); 
     } 
    return View(tool); 
} 

На ваш взгляд, вы создаете таблицу с заголовками, а затем заполняете таблицу данными вашей модели. Я использовал имя и описание, использую ваши члены класса для инструментов.

Используйте actionlinks для вызова результатов action.

@model List<Project.Models.Tool> 
@{ 
    ViewBag.Title = "Project"; 
} 

<h2>Tools</h2> 

<table class="table"> 
    <tr> 

     <th>@Html.DisplayName("Name")</th> 
     <th>@Html.DisplayName("Description")</th> 

    </tr> 

    @foreach(var item in Model) 
    { 
     <tr> 

      <td> 
       @Html.DisplayFor(modelItem => item.Name) 
      </td> 
      <td> 
       @Html.DisplayFor(modelItem => item.Description) 
      </td> 
      <td> 
       @Html.ActionLink("Tool Details", "Details", new { id = item.ID }) 
      </td> 
    } 

Если вы ищете, чтобы получить конкретные продукты по категориям, то есть инструменты подмножество продуктов, для этого потребуется выделение на идентификатор категории и вы передаете это через ActionResult, в качестве параметра, много, как я в деталях.

Помимо этого, в этом формате слишком много объяснений. Надеюсь, поможет.

Это должно заставить вас начать, и я возьму вам ссылку на хороший учебник для использования с этим.

http://www.asp.net/mvc/overview/getting-started/introduction/getting-started

Смежные вопросы