2013-01-31 17 views
5

Jak dołączyć istniejący widok do akcji? Mam na myśli, że już dołączyłem ten Widok do Akcji, ale chcę dołączyć do drugiej Akcji.Jak dołączyć istniejący widok do akcji kontrolera?

Przykład: akcja o nazwie Indeks i widok, ta sama nazwa, są do niej dołączone, kliknij prawym przyciskiem myszy, dodaj widok ..., ale teraz, jak dołączyć do drugiego? Załóżmy, że akcja o nazwie Index2, jak to osiągnąć?

Oto kod:

//this Action has Index View attached 
public ActionResult Index(int? EntryId) 
{ 
    Entry entry = Entry.GetNext(EntryId); 

    return View(entry); 
} 

//I want this view Attached to the Index view... 
[HttpPost] 
public ActionResult Rewind(Entry entry)//...so the model will not be null 
{ 
    //Code here 

    return View(entry); 
} 

google go i nie mogę znaleźć właściwą odpowiedź ... Jest to możliwe?

Odpowiedz

5

nie można „przyczepić” działania na widoki, ale można określić, co widok, który ma być zwrócony przez metodę działania za pomocą Controller.View Method

public ActionResult MyView() { 
    return View(); //this will return MyView.cshtml 
} 
public ActionResult TestJsonContent() { 
    return View("anotherView"); 
} 

http://msdn.microsoft.com/en-us/library/dd460331%28v=vs.98%29.aspx

+0

Kiedy prawym przyciskiem myszy na działanie menu kontekstowe pokazuje mi Dodaj widok opcja, w porządku. Więc nie mogę dodać tego samego widoku do innej akcji? –

+0

możesz ręcznie dodać nowy widok do swojego projektu, a następnie go zwrócić za pomocą kodu powyżej –

+0

Nie chcę dodawać nowego widoku, chcę ponownie użyć istniejącego widoku z inną akcją o innej nazwie ... –

4

Czy to pomoże? Można użyć przeciążenie View, aby określić inny pogląd:

public class TestController : Controller 
{ 
    // 
    // GET: /Test/ 

    public ActionResult Index() 
    { 
     ViewBag.Message = "Hello I'm Mr. Index"; 

     return View(); 
    } 


    // 
    // GET: /Test/Index2 
    public ActionResult Index2() 
    { 
     ViewBag.Message = "Hello I'm not Mr. Index, but I get that a lot"; 

     return View("Index"); 
    } 


} 

Oto widok (Index.cshtml):

@{ 
    ViewBag.Title = "Index"; 
} 

<h2>Index</h2> 

<p>@ViewBag.Message</p> 
+1

W twoim przykładzie będzie to powrót Widok ("Indeks", wpis); –

+0

Właściwie to nie ... Muszę przekazać model jako argument do akcji. –

+1

Chodzi mi o to, że możesz zastąpić linię w '// Code here',' return View (entry); 'w twoim kodzie za pomocą' return View ("Index", wpis); ' –

Powiązane problemy