WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   ASP.NET MVC Controller Användare (https://www.wn.se/forum/showthread.php?t=1062100)

SweLogan 2014-06-19 17:13

ASP.NET MVC Controller Användare
 
Hej, ny på ASP.NET MVC,

Ska lista upp en ToDo lista som är kopplad till en användare.

Koden funkar men känns som att det borde finnas nått annat sätt / "rätt" sätt att hämta ut användare.ID??

// GET: /ToDo/
public ActionResult Index()
{

var id = (new AccountController()).UserManager.FindByName(User.I dentity.Name).Id;


var todoes = db.ToDoes.Where(u => u.UserId == id);
return View(todoes.ToList());
}

rhdf 2014-06-21 03:29

nja, Eftersom det funkar känns det ju mer som ett "best practices fall"
vilken typ av inloggning använder du ?
SimpleMembership eller den gamla klassiska membership-provider lösningen?
För SimpleMembership så får du lägga till [InitializeSimpleMembership] till din controller och

sedan
int currentUserId = (int) Membership.GetUser().ProviderUserKey;


I övrigt så är jag ju "arbetsskadad" och tycker att du skall flytta ut
var todoes = db.ToDoes.Where(u => u.UserId == id);
till ett service-lager
( för mer läsning om detta: http://www.asp.net/mvc/tutorials/old...ely-coupled-cs)

även om din metod i dagsläget är rätt "smal" så kanske det i framtiden dyker upp ett scenario där du skall kolla om en viss användare verkligen får se vissa saker eller liknande
Controller-metoder skall innehålla så lite kod som möjligt

det du vill ha (ja det vill du) är nånting i stil med
Kod:

[Authorize]
public ActionResult Index()
{
var id =(int) Membership.GetUser().ProviderUserKey;
return View(ToDoListService.GetByUser(id));
}


goose 2014-06-21 12:12

Ni ska nog kolla på asp.net identity som är det nya och ersätter simplemembership och den gamla membership-providern : http://www.asp.net/identity


Alla tider är GMT +2. Klockan är nu 10:50.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson