2012-03-22 26 views
6

Bunu olabildiğince kısa bir şekilde yapmaya çalışacağım..NET MVC'de URL'ye filtre eklemenin en iyi yolu

  • Web filtreleme ve filtreleme
  • Değişiklikleri sıralamak için izin verir ve filtre görüşleri paylaşan kullanıcı veya imi can URL'ye yansıtılması gerekir tasnif bir tablo içermektedir.

soru şudur: O, yorumlanması özel kod bir demet yazmak zorunda kalmadan/yorumlamak sunucuda kullanmak kolayca URL parçası olmak ve için sıralama ve filtreleme sözdizimi tüm izin etkili bir kongre nedir o?

Bazı araştırmalar yapıyorum ve OData URI kurallarına rastladım ve işleri nasıl yaptım. http://www.odata.org/developers/protocols/uri-conventions

Daha fazla araştırma, MVC 4 Web API'sinin bir IQueryable döndürerek bu sözleşmenin kullanılmasına izin verdiğini gösterir. Bir bölüm hariç bu harika görünüyor ... Bu noktada bir RESTful API uygulamıyorum ve hepsi bu gibi görünüyor. Öyleyse OData gibi bir şeyi nasıl kullanabilirim ve hala bir View veya PartialView döndürürüm? OData URI sözleşmesini bir C# nesnesine ayrıştıracak bir şey var mı?

Bu sorunun veya önerinizle ilgili herhangi bir kavrayış varsa, ben tüm kulaklarım.

+0

MVC 4 Web Api derken, Asp.Net'in mi demek istiyorsunuz? Öyleyse, URL parametreleri eylem yöntemlerine otomatik olarak aktarılır ve eylem yönteminin imzasında olduğu gibi bildirdiğiniz tür olarak yorumlanmaya çalışılır. –

+0

Evet, bu nedenle ASP.NET MVC hakkında ve evet parametrelerin eylem yöntemleri ile nasıl çalıştığını biliyorum. Sorun şu ki, URL'ye karmaşık filtreler koyduğunuzda, işler tüylü olur. Benim için ele alan bir sözleşme/çerçeve umuyordum. MVC 4'ün web API'sı benim için ele almayı gerçekten çok yakın ama veri API'sine odaklanıyor ve düzenli görüntülemeye ihtiyacım var PartialVies – Zifik

+0

İlk olarak filtreler listenizi nasıl oluşturuyorsunuz? Bir veritabanında saklanıyorlar mı? Veri kümesinden dinamik olarak oluşturuldu mu? Sayfaya kodlanmış mı? – Bobson

cevap

0

Sorunuzun bir parçası olan URL kongresi için, OData ile kendi sorunuzu yanıtladınız. Bu veriyi C# nesnesine getirirken, aşağıdaki yaklaşımı kullanırdım:

URL parametrelerini karıştırmak ve bunları bir C# nesnesine dönüştürmek için bir eylem filtresi kullanın. İşlem filtrenizde URL parametrelerini rota verisine ekleyin ve C# nesnesi eyleminizde kullanılabilir.

ASP.NET MVC Pass object from Custom Action Filter to Action

Telerik MVC ızgara bir göz atın, onlar hemen hemen ne soran yapan bir GridAction eylem filtre kullanın.

0

Özel model bağlamalara bakardım. İyi bir genel bakış burada bulunabilir: http://weblogs.asp.net/nmarun/archive/2010/02/25/asp-net-mvc-model-binding.aspx

Genellikle formları olan POST istekleri için kullanılır, ancak GET istekleri için de kullanamazsınız. Senin Denetçi'nin Hareket İçinde

public class TableParameters { 
    public string TableFilter { get; set; } 
} 
  • olarak modelini ekleyin:

    1. özellikleri gibi parametreler sıralama/filtrenize ile yeni model sınıf oluştur:

      Temelde, yaklaşımınız olmalı

      public ActionResult TableAction(TableParameters parameters) { /* Action logic */ } 
      
    2. Parametreleri diyerek e URL:

      /Controller/TableAction?TableFilter=[your-filter-string] 
      

    parametreleri sorgu dizesinden değerle doldurulmuş özelliği olacaktır senin eylem nesnesi.

  • +0

    Ayrıca, model bağlama güvenlik tarafı http://odetocode.com/blogs/scott/archive/2012/03/11/complete-guide-to-mass-assignment-in-asp-net-mvc.aspx – infl3x

    İlgili konular