2016-04-04 91 views
0

Senaryo: Yönetici tarafından yeni kullanıcılar oluşturmaya bir görünüm eklemeye çalışıyorum. Uygulama form kimlik doğrulamasıdır. Giriş yapmış bir kullanıcı var (admin). Görünüme bir Parola For eklendiğinde, görünüm otomatik olarak giriş yapan kullanıcıyla alanları doldurur. asp.net-mvc: Bir parola ekleme Görünümlerim otomatik olarak benim alanlarımı doldurur

kontrolör kodu:

public ActionResult Create() 
{ 
    var userViewModel = new UserViewModel(); 
    return View(userViewModel); 
} 

görünüm kodu:

@model MVC4.Models.UserViewModel 

@{ 
    ViewBag.Title = "Create"; 
} 

@using (Html.BeginForm()) 
{ 
@Html.AntiForgeryToken() 
@Html.ValidationSummary(true) 

<fieldset> 
    <legend>UserVireModelcs</legend> 

    <div class="editor-label"> 
     @Html.LabelFor(model => model.UserName) 
    </div> 
    <div class="editor-field"> 
     @Html.EditorFor(model => model.UserName) 
     @Html.ValidationMessageFor(model => model.UserName) 
    </div> 

    <div class="editor-label"> 
     @Html.LabelFor(model => model.Password) 
    </div> 
    <div class="editor-field"> 
     @Html.PasswordFor(model => model.Password) 
     @Html.ValidationMessageFor(model => model.Password) 
    </div> 

    <p> 
     <input type="submit" value="Create" /> 
    </p> 
</fieldset> 
} 
+0

Görüntüye model göndermezseniz böyle olur mu? Zaten boş bir model göndermek garip görünüyor. – David

+0

Evet, bu yüzden boş bir tane göndermeyi denedim, ancak eter yolu oluyor. – petric

+0

Tarayıcıya giriş formunu önceden doldurmadığından emin misiniz? "Kullanıcı adı" ve "Şifre" alanları, tarayıcı tarafından bir giriş istemi olarak yorumlanabilir. – David

cevap

1

Ne şüpheli, Buradaki uygulama ön dolum olmadığı alanlar olduğunu, ancak tarayıcısı’dur. Bunun nedeni, bu formun bir oturum açma isteği gibi tam olarak görünmesidir. (Bu bilgiyi, sitenin herhangi bir giriş bilgisini otomatik olarak doldurmayacak şekilde tarayıcınızın kendisinden temizleyerek test edebilirsiniz.)

Tavsiye edeceğim şey, oturum açma ve oluşturma kavramlarını anlamsal olarak ayırmaktır. kullanıcı. Temel olarak ... alanları yeniden adlandırın. Biraz daha spesifik isimlerle basit görünüm modeli yardımcı olacaktır:

<div class="editor-label"> 
    @Html.LabelFor(model => model. NewUserUsername) 
</div> 
<div class="editor-field"> 
    @Html.EditorFor(model => model. NewUserUsername) 
    @Html.ValidationMessageFor(model => model. NewUserUsername) 
</div> 

<div class="editor-label"> 
    @Html.LabelFor(model => model.NewUserPassword) 
</div> 
<div class="editor-field"> 
    @Html.PasswordFor(model => model.NewUserPassword) 
    @Html.ValidationMessageFor(model => model.NewUserPassword) 
</div> 

Biraz daha ayrıntılı belki birden olmasını isteyebilirsiniz var (ben kabul ediyorum:

public class CreateUserViewModel 
{ 
    public string NewUserUsername { get; set; } 
    public string NewUserPasswords { get; set; } 
} 

Sonra görünümünde kullanan Bu daha basit her zaman daha iyidir), ancak bu durumda isimlendirmeye açık bir bağlam eklemek, tarayıcıya bu 'un bir oturum açma formu olmadığını daha net bir hale getirir. İhtiyaçlarınız için anlamlı olan herhangi bir adlandırma kullanın, sadece Username ve Password'dan daha açıklayıcı olun.