C# 从视图MVC中的控制器获取对象
我需要创建一个html格式的电子邮件正文。在HistoryController中,我定义了一个metod,该metod返回一个对象(Course),该对象的属性将用于如我所说的将身体装箱。我不知道如何在视图中获取对象。我见过一种使用ActionResult的方法,但我不想展示这种观点,它只是作为创建电子邮件的辅助工具 我明白了 历史控制器C# 从视图MVC中的控制器获取对象,c#,asp.net-mvc,model-view-controller,C#,Asp.net Mvc,Model View Controller,我需要创建一个html格式的电子邮件正文。在HistoryController中,我定义了一个metod,该metod返回一个对象(Course),该对象的属性将用于如我所说的将身体装箱。我不知道如何在视图中获取对象。我见过一种使用ActionResult的方法,但我不想展示这种观点,它只是作为创建电子邮件的辅助工具 我明白了 历史控制器 public static CURSO courseSelected = new CURSO(); public static CURSO courseSel
public static CURSO courseSelected = new CURSO();
public static CURSO courseSel()
{
courseSelected.Name = "Physics";
return courseSelected;//cursoSelected del tipo CURSO
}
查看
@model Project.Models.Course
@{
var courseSel = Project.Models.HistoryController.courseSel();
}
<fieldset class="fHorizontalCenter">
<label style="font-size:18px">Welcome to course of </label><label>@courseSel.Name</label>< br />
</fieldset>
@model Project.Models.Course
@{
var courseel=Project.Models.HistoryController.courseel();
}
欢迎来到coursel@coursel.Name课程
但是我不能使用变量的de数据,它总是打印这个
欢迎来到@courseel.Name课程假设您有一个如下所示的模型:
namespace Project.Models
{
public class Course
{
public string CourseName { get; set; }
}
}
public class HistoryController : Controller
{
public ActionResult Index(/*put whatever parameters in here*/)
{
// Fetch your model
// just example data
var course = new Course { CourseName = "your coursename" };
var html = GetEmailText(course);
// send your email
return View(); // or redirect to action
}
private string GetEmailText(Course course)
{
return RenderRazorViewToString("CourseEmailTemplate", course);
}
private string RenderRazorViewToString(string viewName, object model)
{
ViewData.Model = model;
using (var sw = new StringWriter())
{
var viewResult = ViewEngines.Engines.FindPartialView(ControllerContext,
viewName);
var viewContext = new ViewContext(ControllerContext, viewResult.View,
ViewData, TempData, sw);
viewResult.View.Render(viewContext, sw);
viewResult.ViewEngine.ReleaseView(ControllerContext, viewResult.View);
return sw.GetStringBuilder().ToString();
}
}
}
以及视图/共享文件夹中名为“CourseEmailTemplate.cshtml”的视图:
@model Project.Models.Course
@{
Layout = null;
}
<fieldset class="fHorizontalCenter">
<label style="font-size:18px">Welcome to course of </label><label>@Model.CourseName</label>< br />
</fieldset>
从中窃取的一些代码如何访问视图?为什么控制器位于模型命名空间中?视图具有.cshtml扩展名?视图中的所有标签是否正确打开和关闭?