2012-12-26 15 views
5

(Guid.Empty) ...Girdi gösterir yanlış Kimliği bazı varlığın kimliği depolayan bir giriş (gizli) alanı olmasını istediğiniz

Ama bu kodu: bu

@Html.HiddenFor(model => model.Id) 

Sonuçları HTML işaretleme: Ben Model.Id != Guid.Empty eminim beri

<input id="Id" name="Id" type="hidden" value="00000000-0000-0000-0000-000000000000" /> 

Bu çok garip. HTML'ye @Model.Id'u enjekte ederek bunu onaylayabilirim. Bu iyi çalışır:

<input type="hidden" id="Id" name="Id" value="@Model.Id" /> 

Neden View Engine, bu sıfırları doğru Kimlik yerine koymak için karar verir?

Düzenleme: oldukça karmaşıktır ama burada neredeyse aynı davranış gösterir süper basit örnek olduğu için özgün kod eklemek vermedi (o giriş değerindeki Guid.Empty boş bir dize değil kullanır):

Görünüm:

@using MvcApplication4.Models 
@model Foo 

@using (Html.BeginForm()) 
{ 
    @Html.HiddenFor(model => model.Id) 
    @Model.Id 

    <input type="submit" value="ok" /> 
} 

Denetleyici:

namespace MvcApplication4.Controllers 
{ 
    public class HomeController : Controller 
    { 
     [HttpGet] 
     public ActionResult Index() 
     { 
      Foo foo = new Foo(); 
      return View(foo); 
     } 

     [HttpPost] 
     public ActionResult Index(Foo foo) 
     { 
      foo.Id = Guid.NewGuid(); 
      return View(foo); 
     } 
    } 
} 

Modeli:

using System; 

namespace MvcApplication4.Models 
{ 
    public class Foo 
    { 
     public Guid? Id { get; set; } 
    } 
} 

Sorun, işlem sonrası elbette görülebilir.

+0

Modelinizi görebilir miyim? –

+0

Ve denetleyicinin aksiyon kodu – MarkG

+0

görünümüne giriyor Modelin veya eylem yönteminde, Id'in geçersiz kılınması dışında ilginç bir şey yok. – user1068352

cevap

5

ve bu her şeyi açıklar. this question'da başka bir kişi ile aynı sorunu yaşıyorsunuz. Lütfen kabul edilen cevaba ve yorumuna, sorununuzla alakalı olarak'a bakın.

İlgili konular