2016-10-20 2 views
0

действительно новый для MVC и не уверен, как бы получить мою переменную «UsersFullName» из кода, стоящего за файлом класса, в представление. С ASPX и aspx.cs я сделал бы это:Как добавить код в файл MVC cshtml

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"> 

Как я могу сделать то же самое в представлении? Спасибо заранее.

ответ

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

      return View(); 
     } 

Просмотр

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

проверка из документации MVC на StackOverflow

1

Создать Model:

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

И вернуть его к вашему мнению:

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

И тогда, на ваш взгляд, заявить об этом в верхней части вашей точки зрения:

@model namespace.UserModel 

И на входе вы можете ссылаться на эту модель с помощью @model.FullName или, еще лучше:

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

Спасибо за Ваш ответ, при создании вар «ViewModel» бит Ф.И.О является erroring говоря, что это не может быть назначен в качестве ReadOnly ... вот мой код до сих пор: общественный индекс ActionResult() { вар ViewModel = новый UserModel {FullName =}; return View (viewModel); } public class UserModel { public string FullName {get {return UserPrincipal.Current.DisplayName; }} // Любые другие свойства } –

+0

@ShaheenK это потому, что вы пытаетесь установить его и на самом деле не устанавливаете. Поскольку у вас нет сеттера, вы можете просто «viewModel = new UserModel()» – ediblecode

1

Viewbag это один из способов сделать это. Добавление его в вашу модель - другое. Есть больше вариантов. Посмотрите на эти статьи

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

Спасибо Jonny, первая статья была действительно хороша и решила мою проблему! :) –

+0

В этом случае, пожалуйста, подтвердите как ответ;) – Jonny

0

Вы можете сделать это из многих способов, но это наиболее популярные подходы:

1) с использованием ViewBag

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

и назовите это ViewBag на вашей .cshtml странице

, как показано ниже:

<span>@ViewBag.userFullName</span> 

2) с использованием ModelView

Для ViewModel подхода необходимо создать Properties для ваших лиц в классе, как показано ниже:

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

и используйте эту ViewModel в своем Контроллер такой как

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

и использовать на.cshtml, как показано ниже:

@model UserViewModel //your class refrence 

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

Надеюсь, это поможет вам. Благодаря

Смежные вопросы