[asp.net-mvc]ActionLink 在 MVC4 中的并不能解决控制器中的操作

发布时间: 2016/10/9 6:07:56
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有一个学生控制器与一些行动,当我想要将我的控制器的行动联系起来,我认为找不到我操作的名称。

所以你可以看到我的控制器操作︰

namespace EducationMVC.Controllers
{
    [Authorize]

    public class StudentController : Controller
    {
        //
        // GET: /Student/
        private StudentRepositor obj = new StudentRepositor();

        public ActionResult Index()
        {
            var model = obj.GetStudentlist();

            return View(model);
        }
        public ActionResult ScheduleStudentList(string id)
        {
            var model = obj.GetStudentlistOfSchedule(id);

            return View("Index",model);
        }
        public ActionResult Create()
        {
            return View("Create");

            // return View();
        }
        [HttpPost]
        public ActionResult Create(Student student)

        {
            student.RegisterDate = DateTime.Now.Date;
            obj.AddNewStudent(student);
            obj.Save();
            return RedirectToAction("Index", "Student");
        }
        public ActionResult Edit(int id)
        {

            return View(obj.FindStudentById(id));
        }

        [HttpPost]
        public ActionResult Edit(Student student)
        {

            if (ModelState.IsValid)
            {
                obj.Update(student);
                obj.Save();
            }
            return RedirectToAction("Index", "Student");
        }
        public ActionResult Delete(int id)
        {
            obj.RemoveStudent(obj.FindStudentById(id));
            obj.Save();
            return RedirectToAction("Index", "Student");

            // return View();
        }

    }
}

这里是我的看法︰

@model IEnumerable<EducationMVC.Models.SchedulePresentation>


@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>

<p>
    @Html.ActionLink("Create New", "Create")
</p>
<table>
    <tr>
        <th>
            @Html.DisplayNameFor(model => model.teacherName)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.lessonName)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.className)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.degreeName)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.facultyName)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.semesterName)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.majorName)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.DateOfExam)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Capacity)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.examLocation)
        </th>
        <th></th>
    </tr>

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.teacherName)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.lessonName)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.className)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.degreeName)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.facultyName)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.semesterName)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.majorName)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.DateOfExam)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Capacity)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.examLocation)
        </td>
        <td>
            @Html.ActionLink("ویرایش", "Edit", new {  id=item.id }) |
            @Html.ActionLink("حذف", "Delete", new { id=item.id  })|
            @Html.ActionLink("لیست دانشجویان  ","ScheduleStudentList","StudentController", new { id=item.id  })


        </td>
    </tr>
}

</table>

所以你可以看到在视图中的最后一行︰

@Html.ActionLink("لیست دانشجویان  ","ScheduleStudentList","StudentController", new { id=item.id  })

找不到ScheduleStudentList行动。它只是找到索引删除编辑操作的.so 什么该怎么办?

此致敬意

解决方法 1:

作为毛罗提到,您不要指定控制器。 然而,当您提供该控制器的名称,你需要额外 ,null 要清晰,过载你打电话。

@Html.ActionLink("لیست دانشجویان  ", "ScheduleStudentList", "Student", new { id=item.id  }, null)

你得到这个问题因为没有额外的 null,您在调用此重载

public static MvcHtmlString ActionLink(
    this HtmlHelper htmlHelper,
    string linkText,
    string actionName,
    Object routeValues,
    Object htmlAttributes
)

基本上,你的"学生"进入 routevalues 参数,而不是被解释为一个字符串。 生成的链接可能会有好东西像 ?length=7 的这一端,它被人误解此参数。

添加附加 ,null 更改它,以便您在调用此重载

public static MvcHtmlString ActionLink(
    this HtmlHelper htmlHelper,
    string linkText,
    string actionName,
    string controllerName,
    Object routeValues,
    Object htmlAttributes
)
赞助商