2011-07-07 15 views
19

Bir Ajax isteğinin parçası olarak kısmi bir görünüm oluşturuyorum. Bir görünümden kısmi görünümü çağırdığınızdaASP.NET MVC3 Controller.PartialView öğesini çağırırken bir HtmlFieldPrefix ekleyin

:

int i=0; 
foreach(var rule in Model.Rules) { 
    @Html.Partial("ValidationRuleRow", rule, new ViewDataDictionary { 
     TemplateInfo = new System.Web.Mvc.TemplateInfo { HtmlFieldPrefix = string.Format("Rules[{0}]", i) } }) 
    i++; 
} 

düzgün Modeli bağlama sağlamak için HtmlFieldPrefix ayarlamak mümkün.

public ActionResult NewMonitorValidationRule() 
{ 
    ValidationRule rule = new ValidationRule{Id = TempSurrogateKey.Next}; 
    var view = PartialView("ValidationRuleRow", rule); 
    // CODE TO SET PartialView field prefix 
    return view; 
} 
:

$.ajax({ 
    type: "GET", 
    url: "/Monitors/NewMonitorValidationRule", 
    success: function (data, textStatus, jqXHR) { 
     var element = $(data); 
     $("#ValidationRuleContainer").append(element); 
    } 
}); 

Yani HTML almak için benim denetleyicisi bir eylem vardır:

Ben kullanıcı gibi, ajax ile anında yeni ValidationRuleRow eklemek mümkün istiyorum

Döndürülmüş HTML'nin bir öneki yok. Bir Denetleyicideki bir Eylemden bir PartialView çağrılırken bir önek ayarlamak için zaten var mı? , Daha da iyisi

@{ 
    if (!string.IsNullOrEmpty(Model.MyPrefix)) 
    { 
     ViewData.TemplateInfo.HtmlFieldPrefix = Model.MyPrefix; 
    } 
} 

cevap

20

: öneki ayarlamak için bu görünüm modeli özelliği

public ActionResult NewMonitorValidationRule() 
{ 
    ValidationRule rule = new ValidationRule{Id = TempSurrogateKey.Next}; 
    // CODE TO SET PartialView field prefix 
    rule.MyPrefix = "Rule[153]"; 
    return PartialView("ValidationRuleRow", rule); 
} 

ve kısmi görünümü ValidationRuleRow.cshtml kullanım içi:

+2

Bunun için iyi bir ödül verdi. –

+1

Çok teşekkürler, orada sürpriz beni yakaladı :) –

+0

Bazen "id nitelikleri" girişi görüntülenmez ... [soru] (http://stackoverflow.com/questions/38638451/aspnet-mvc-5 -HTML-yardımcı-aksiyon yöntem görüş-sonuç giriş id-eksik bazen) – ooXei1sh

18

Sen git görüş modelinin bir parçası olarak bu bilgiyi geçebileceği Eğer kontrolör eylem içine ViewData.TemplateInfo.HtmlFieldPrefix ayarlayabilirsiniz

public Actionresult MyAction() 
{ 
    ... 
    ViewData.TemplateInfo.HtmlFieldPrefix = "MyPrefix"; 

    return PartialView("MyView", viewmodel); 
} 

Görünüm modelinizde ViewBag veya özellik gerekmez.

+0

İyi çağrı. Görünüm modeline eklemek yerine ViewBag kullanarak bitti, ancak bu geçici çözüm yeterli. Teşekkürler. –

+0

Teşekkürler, iş var! ;) –

İlgili konular