2017-03-10 90 views
6

Görünümüm'de EditorFor var. veritabanından tablosundaki tüm NULL bulmak ve bazı değerle güncelleştirmek denetleyicisi buGeçiş değeri EditorFor'dan yönteme geç

Ayrıca
@Html.EditorFor(model => model.First().Link, 
    new { htmlAttributes = new { @class = "form-control", placeholder = "Email", id= "start" } }) 

Ben Eylem, gibi burada güncelleyin gider düğmesine dokunun Endeksi görünümündeki kod

public ActionResult Update(string start="lol") 
{ 
    ApplicationDbContext context = new ApplicationDbContext(); 

    IEnumerable<InvitationMails> customers = context.InvitationMails 
      .Where(c => c.Link == null) 
      .AsEnumerable() 
      .Select(c => { 
       c.Link = start; 
       return c; 
      }); 
    foreach (InvitationMails customer in customers) 
    { 
     // Set that row is changed 
     context.Entry(customer).State = EntityState.Modified; 
    } 
    context.SaveChanges(); 
    return RedirectToAction("Index"); 
} 

olduğunu Eylem ve İşte başlatmak kod

<ul class="btn btn-default" style="width: 150px; list-style-type: none; font-size: 16px; margin-left: 20px"> 
       <li style="color: white">@Html.ActionLink("Добавить почту", "Update", "InvitationMails", null, new { @style = "color:white" })</li> 
      </ul> 

olduğunu Ama burada statik değeri ile güncelleme ve ben VIew değeri alma istiyorum. Kodumu nasıl yazmam gerekiyor?

+1

Niçin koleksiyonunuz olan ve modelinizle ilgili olmayan bir şeye bağlamaya çalışan bir modeliniz var. Başarmaya çalıştığınız şeyin ne olduğu belli değil. Parametrenize bağlanmak için, girişinizin 'name =" start "' olması gerekir. Herhangi bir şeye bağlanmadığınızdan, girişi manuel olarak oluşturmalısınız. –

+1

Ve sonra yönteminize GET yapıyormuş gibi görünen bir eylem bağlantısı gösterdiniz, ancak bu, girişinizin değerini geçmez. –

cevap

1

Temel olarak, işlenmiş input'un name özniteliğini ayarlamanız gerekir.

Eğer MVC 4 kullanıyorsanız, bu durumda EditorFor arasındaki bir fazladan aşırı yüklenme var demektir.

Böyle kullanabilirsiniz: artık id="start" gerekmez

@Html.EditorFor(model => model.First().Link, 
    null, 
    "start", //That will set id and name attributes to start 
    new { @class = "form-control", placeholder = "Email" }) 

Not. senin güncellemesinden sonra

:

Temelde 2 seçenek var.

1s seçenek - form kullanın:

@using (Html.BeginForm("Update", "InvitationMails", FormMethod.Post)) //maby you need GET 
{ 
    @Html.EditorFor(model => model.First().Link, 
     null, 
     "start", //That will set id and name attributes to start 
     new { @class = "form-control", placeholder = "Email" }) 

     <ul class="btn btn-default" style="width: 150px; list-style-type: none; font-size: 16px; margin-left: 20px"> 
      <li style="color: white"> 
       <button type="submit" style="color:white">Добавить почту</button> 
      </li> 
     </ul> 
} 

2 seçenek - aksiyon bağlantı tıklama ile kullanım js.

+0

Kodunuzu deneyin. Çalışmıyor. Şimdi sorumu güncelleyeceğim, belki de açık bir şekilde yazmıyorum –

+0

@ E.S Denetleyiciye geçmek istediğiniz "start" değeriniz var mı? –

+0

EditorFor'dan metin almam ve Eylemi Güncelle eylem sonucuna iletmem gerekiyor –