2009-12-27 20 views

cevap

14

HtmlHelper.BeginForm yönteminin tümü, yerel bir denetleyiciyi hedefleyen bir <form> etiketi oluşturmanıza yardımcı olur. Harici bir siteye yüklüyorsanız, sadece fiili <form> etiketi, yani ona orada hepsi

<form action="http://www.example.com/someaction" method="post"> 
    Actual form content in here 
</form> 

yazmak. MVC formları, bir dizi ViewState ve olay alanları ve diğer sihirli öğeler içeren ASP.NET WebForms'daki formlar gibi değildir. Onlar sadece eski eski HTML formları.

+0

Yeh, ben yaptım. Ama ben sadece MVC'de bir şey eksik olup olmadığımı merak ediyordum (RoR Land'den geliyor, bir form var {url =()} metodu var .. Thx. – dale

+4

Eğer sizin için yaratılmayan doğrulama ile ilgili bazı kanıtlar olabilir. formu el ile oluşturuyorsunuz - jQuery –

+1

ile MVC doğrulamasını kullanıp kullanmadığınızı gözlemleyin Simon dokumacı işaret ettiğinden, HtmlHelper doğrulama çerçevesini kullanmazsanız, bu sorunla karşılaştım – Zasz

0

onay mvc kaynak kodu, html.beginform yöntemi yalnızca,

if (htmlHelper.ViewContext.ClientValidationEnabled) 
{ 
    htmlHelper.ViewContext.FormContext.FormId = tagBuilder.Attributes["id"]; 
} 

yüzden bir sorun olacak, yalnızca yerel html form oluşturmak değil, aynı zamanda sadece istediğim müşteri doğrulama için sth eklemeyin i sadece kendi uzantımı yazınız

57

BeginForm yönteminde birkaç aşırı yükleme var.

BeginForm(String, String, FormMethod, IDictionary<String, Object>) 
// here are the parameter names: 
BeginForm(actionName, controllerName, method, htmlAttributes) 

Eğer harici bir siteye göndermek istediğiniz beri ActionName ayarlamak için gerek yoktur: İstenen URL ile form etiketine eylem niteliğini ayarlamak için , sen BeginForm aşağıdaki aşırı kullanmak gerekir ve controllerName, sadece null olarak bırakın.

@Html.BeginForm(
    null, null, FormMethod.Post, new {@action="http://cnn.com/post"} 
) 

Bu, eylem parametresini kodlamaz.

+1

Bu, zamanımı kurtardı. – Govind