2016-10-20 2 views
0

wirklich neu zu MVC und nicht sicher, wie ich meine Variable 'UsersFullName' vom Code hinter Klassendatei zur Ansicht bekommen würde. Mit aspx und aspx.cs würde ich dies getan haben:Wie man Code zu einer MVC cshtml Dateiansicht hinzufügt

index.aspx.cs:

using System.DirectoryServices.AccountManagement; 

namespace TeamRequestForm.Controllers 
{ 
    public class AddTeamController : Controller 
    { 
     // GET: AddTeam 
     public ActionResult Index() 
     { 
      return View(); 
     } 
     private string usersFullName = UserPrincipal.Current.DisplayName; 
     public string UsersFullName { get { return usersFullName; } } 
    } 
} 

index.aspx:

<input type="text" value="<%=UsersFullName%>" name="changeOriginator" id="changeOriginator"> 

Wie kann ich das gleiche in einer Ansicht zu tun? Vielen Dank im Voraus.

Antwort

0
 public ActionResult Index() 
     { 
ViewBag.UsersFullName = UsersFullName; 

      return View(); 
     } 

Ansicht

@Html.TextBoxFor(c => c.UsersFullName) 

Check-out der MVC-Dokumentation auf Stackoverflow

1

erstellen Model:

public class UserModel 
{ 
    public string FullName { get; set; } 
    // Any other properties 
} 

und schicken Sie es zu Ihrer Ansicht:

public ActionResult Index() 
{ 
    var viewModel = new UserModel { FullName = // Logic for set }; 
    return View(viewModel); 
} 

Und dann Ihrer Meinung erklärt dies an der Spitze Ihrer Ansicht:

@model namespace.UserModel 

Und im Eingang Sie dieses Modell unter Verwendung @model.FullName oder, noch besser verweisen kann:

@Html.EditorFor(model => model.FullName) 
+0

Vielen Dank für Ihre Antwort, bei der Erstellung von var ‚Ansichtsmodell‘ der Vollständiger Name Bit erroring wird sagen, es kann nicht als Nur-Lese zugewiesen werden ... hier ist mein Code so weit: public Action Index() { var Ansichtsmodell = neues Benutzermodell {FullName =}; Rückansicht (viewModel); } Öffentliche Klasse UserModel { öffentliche Zeichenfolge FullName {get {return UserPrincipal.Current.DisplayName; }} // Irgendwelche anderen Eigenschaften } –

+0

@ShaheenK das ist, weil Sie versuchen, es einzustellen, und es nicht wirklich einstellen. Da Sie keinen Setter haben, können Sie einfach 'viewModel = new UserModel()' – ediblecode

1

Viewbag ist eine Möglichkeit, es zu tun. Hinzufügen zu Ihrem Modell ist ein anderer. Es gibt mehr Optionen. Werfen Sie einen Blick auf diese Artikel

http://www.c-sharpcorner.com/uploadfile/abhikumarvatsa/various-ways-to-pass-data-from-controller-to-view-in-mvc/

http://www.webdevelopmenthelp.net/2014/06/asp-net-mvc-pass-data-controller-view.html

+0

Dank Jonny, der erste Artikel war wirklich gut und löste mein Problem! :) –

+0

In diesem Fall genehmigen Sie bitte als Antwort;) – Jonny

0

Sie dies aus vielerlei Hinsicht tun können, aber diese sind beliebtesten Ansätze:

1) mit ViewBag

public ActionResult Index() 
    { 
     private string usersFullName = UserPrincipal.Current.DisplayName; 
     ViewBag.userFullName=usersFullName; 
     return View(); 
    } 

und rufen Sie diese ViewBag bei Ihrer .cshtml Seite

wie unten:

<span>@ViewBag.userFullName</span> 

2) ModelView

Für ViewModel Ansatz Sie Properties für Ihre Entitäten in der Klasse zu erstellen haben wie unten:

public class UserViewModel 
{ 
public string userFullName{get; set;} 
} 

und verwenden Sie dieses ViewModel in Ihrem Controller wie folgt

public ActionResult Index() 
    { 
     private string usersFullName = UserPrincipal.Current.DisplayName; 
     UserViewModel objCls=new UserViewModel(); 
     objCls.userFullName=usersFullName; 
     return View(objCls); 
    } 

und verwenden Sie auf.cshtml Seite wie unten:

@model UserViewModel //your class refrence 

<span>@Model.userFullName</span> // you will get your value here 

Ich hoffe, es wird Ihnen helfen. Dank

Verwandte Themen