2017-07-04 15 views
0

html形式の電子メールの本文を作成する必要があります。 HistoryControllerの中で私は、オブジェクトが(体育館)を返すmetodを定義します。私はビューでオブジェクトを取得する方法を知りません。私はActionResultを使用してmetodを見たことがあるが、私はそれをちょうど電子メールを作成するための補助のように動作Viewを提示しないでください。ビューのコントローラからオブジェクトを取得するMVC

これが表示されます。

HistoryController

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> 

しかし、私は、変数のデ・データを使用しカント、それは常に@courseSelのコースにこの

ようこそを印刷します。名前

+1

ビューにはどのようにアクセスしますか? –

+0

、コントローラがモデル名前空間にある理由 –

+0

あなたは.cshtml拡張子を持っていますか?表示されているすべてのタグが正しく開閉されていますか? –

答えて

0

のは、あなたがこのように見えるモデルがあるとしましょう:

namespace Project.Models 
{ 
    public class Course 
    { 
     public string CourseName { get; set; } 
    } 
} 

とあなたの閲覧/共有フォルダに「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> 

コントローラが見ることができますこのような何か:

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(); 
     } 
    } 
} 

Render a view as a string

から盗まれたいくつかのコード
関連する問題