Asp.Net MVC kullanır
public class SearchViewModel
{
[DisplayName("search query *")]
[Required]
public string Query { get; set; }
}
o zaman bir denetleyici yazma: Şimdiye kadar bir arama girişini içeren bir form bahsettik standart HTTP fiilleri. Html kısmı için, bir URL'ye işaret eden normal bir html formudur. Sunucu tarafı, bu url girişi idare edecek ve gerekli olanı yapacak bir kontrolöre/eyleme yönlendirilecektir.
Bir örnek verelim. Bir arama formu yapmak istersiniz. Her şeyden önce, arama formlarının POST yerine HTTP GET yöntemini kullanması en iyi uygulamadır. Bu nedenle, arama sonuçları yer işaretli, bağlanmış, dizine eklenmiş vb. Olabilir. Daha fazla şey yapmak için Html.BeginForm yardımcı yöntemini kullanmayacağım. açık.
<form method="get" action="@Url.Action("MyAction", "MyController")">
<label for="search">Search</label>
<input type="text" name="search" id="search" />
<button type="submit">Perform search</button>
</form>
Gereksinim duyduğunuz tüm html budur. Artık bir kontrolör "MyController" çağrısında edeceğiz ve yöntem bu gibi bir şey olacaktır:
[HttpGet]
public ActionResult MyAction(string search)
{
//do whatever you need with the parameter,
//like using it as parameter in Linq to Entities or Linq to Sql, etc.
//Suppose your search result will be put in variable "result".
ViewData.Model = result;
return View();
}
Şimdi "MyAction" denilen görünümü işlenecek ve bu bakış Modeli sizin "sonuç" olacak . Sonra istediğiniz gibi göstereceksiniz.
Her şeyden önce teşekkürler dostum. Gördüğünüz gibi, diğer cevapta @Matteo Mosca HTTP fiillerinin kullanılmasından bahsetmiştir. Birinin bunu kullanması gerektiğini düşünür müsünüz veya her zaman bu tür amaçlar için viewmodel kullanımını takip ediyor musunuz? –
@Pankaj Upadhyay, modelleri ve HTTP fiillerini görüntüleme, ortak hiçbir şeyi olmayan tamamen farklı iki kavramdır.Her zaman bir ASP.NET MVC uygulamasında görünüm modellerini kullanmalısınız ve HTTP fiilleri söz konusu olduğunda, bir web uygulaması olduğundan ve HTTP fiillerini zaten kullandığınız HTTP protokolüne dayalı olduğundan. İsterseniz HTML formunda GET fiilini de kullanabilirsiniz. Html.BeginForm yardımcısının, bunu belirtmenize izin veren bir aşırı yükü vardır: '@using (Html.BeginForm (null, null, FormMethod.Get)) {...}'. Ardından, göndermekte olduğunuz işlemin '[HttpPost]' özniteliğini kaldırın. –
ya ... GET fiilini kullanıyorum dediklerimi. Bu tür amaçlar için düşünmüyor musunuz, bu yerine viewmodel kullanmak daha iyi olurdu? Bu nedenle, sadece giriş sorgusunu almak için ayrı bir viewmodel oluşturmaya gerek yoktur. –