将修复ID传递给MVC4中控制器中的所有操作

时间:2014-03-29 09:52:00

标签: c# asp.net-mvc-4

我有一个控制器 ScoreController 所以此控制器中的所有这些操作都需要一个名为 ScheduleId 的ID,所以我必须* viewbag *并再次恢复。我的问题是如何将此值设置为修复值和我的所有视图(即编辑,* 删除 *,创建,* list *)并且操作使用它而不传递?

我的控制器代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using EducationMVC.Models;
using EducationMVC.PresentationClass;
using EducationRepositor;
using DomainClasses;
namespace EducationMVC.Controllers
{
    public class ScoreController : Controller
    {
        //
        // GET: /Score/
        private readonly ScoreRepository obj = new ScoreRepository();
        PresentationClass.DateConverter objconverterDate=new DateConverter();
        public ActionResult Index(string scheduleId)
        {
            List<ScoreStudentPresentation> objlist=new List<ScoreStudentPresentation>();
            List<Score> model = obj.GetStudentlistOfSchedule(scheduleId);
            foreach (Score t in model)
            {
                ScoreStudentPresentation objpres=new ScoreStudentPresentation();
                objpres.ConfirmScore = objconverterDate.ConvertToPersianToShow(t.DateOfSubmit);
                objpres.Family = t.Student.LastName;
                objpres.Name = t.Student.Name;
                objpres.Score = t.Point;
                objpres.StudentNumber = t.Student.StudentId.ToString();
                objpres.id = t.Id.ToString();
                objlist.Add(objpres);

            }
            ViewBag.ScheduleId = scheduleId;
            return View(objlist);
        }
        public ActionResult Create(string ScheduleId)
        {

            return View("Create");

            // return View();
        }
        [HttpPost]
        public ActionResult Create(Score score)
        {
            obj.AddNewScore(score);
            obj.Save();
            return RedirectToAction("Index", "Score");
        }
        public ActionResult Edit(int id)
        {

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

        [HttpPost]
        public ActionResult Edit(Score score)
        {

            if (ModelState.IsValid)
            {
                obj.Update(score);
                obj.Save();
            }
            return RedirectToAction("Index", "Score");
        }

    }
}

正如您所看到的,我将 ScheduleId 传递给了创建和索引,我必须执行此操作以执行其他操作,因为我需要 scheduleId .i我想避免这种情况。

最好的问候。

1 个答案:

答案 0 :(得分:2)

如果您覆盖 OnActionExecuting 方法并在该方法中添加ViewBag项目(例如 ViewBag.ScheduleId ),那么,使用它并不是一个坏主意共享视图中的hiddenInput,例如_Layout(可能在某些特定位置,例如分数中的View文件夹)。

此外,您可以在每个操作方法中定义名为 scheduleId 的参数,或使用请求[&#34; ScheduleId&#34;]