我有一个控制器 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我想避免这种情况。
最好的问候。
答案 0 :(得分:2)
如果您覆盖 OnActionExecuting 方法并在该方法中添加ViewBag项目(例如 ViewBag.ScheduleId ),那么,使用它并不是一个坏主意共享视图中的hiddenInput,例如_Layout(可能在某些特定位置,例如分数中的View文件夹)。
此外,您可以在每个操作方法中定义名为 scheduleId 的参数,或使用请求[&#34; ScheduleId&#34;]