SORU
10 Ocak 2009, CUMARTESİ


Nasıl ASP.NET daha fazla kontrol alabilir miyim?

"Mikro-web -" sanırım şimdiye kadar yapılması durumunda birkaç Yığın Taşması'rs için ilgi olacaktır. çok basit bir yapı için çalışıyorum Ben C düzenliyorum# ASP.NET 3.5 vanilya olan Derinliği sitesi, (yani MVC).

Akışı çok basittir:

  • Eğer bir kullanıcı tüm parametreleri (veya eğer bunlardan herhangi biri geçersiz ise) belirtin olmayan bir URL ile app girerse sadece kullanıcı giriş kontrolleri görüntülemek istiyorum. (Sadece iki tane var.)
  • Eğer bir kullanıcı bir URL ile app girerseyoktüm gerekli parametreleri, sonuçları görüntülemek istiyorumvegiriş kontrolleri parametrelerini değiştirebilirler)

Burada kendini empoze benim gereksinimleri (tasarım ve uygulama karışım):

  • Teslim çoğunlukla kullanıcılar sayfayı kolayca yer imi, böylece kullanmak yerine yazmak istiyorum.
  • BenyokURL aptal sunulduktan sonra görünmek için, gereksiz bit ve parçaları ile. Sadece ana URL ve gerçek parametreler lütfen.
  • İdeal olarak tüm JavaScript gerektiren önlemek için istiyorum. Bu uygulama bunun için iyi bir neden yok.
  • Zaman ve set değerleri vb render sırasında denetimleri erişmek mümkün olmak istiyorum. Özellikle, eğer ASP.NET bu otomatik olarak beni başka kısıtlamalar içinde) yapabiliyorsa mi parametre değerleri geçirilen denetimleri varsayılan değerlerine ayarlamak mümkün olmak istiyorum.
  • Tüm parametre doğrulama kendim yaptığım için mutluyum, ve sunucu tarafında olaylar bu şekilde daha ihtiyacım yok. Gerçekten basit düğmeler, olayları, vb takmak yerine sayfa yükleme üzerinde her şey hazır.

Bu en iyi ama bir yolunu bulamadımtamamengörünüm durumu kaldırma ve yararlı işlevselliği geri kalanı tutmak. this blog post ben post kullanarak herhangi bir gerçek almamak başardıdeğergörünüm durumu için - ama yine de çok çirkin görünen URL, bir parametre olarak bulur.

Eğer ASP.NET bir form yerine düz HTML bir form (yani runat="server") yaparsam o zaman herhangi bir sihirli görünüm durumu anlamadım ama sonra denetimleri programlı olarak erişemiyorum.

BenolabilirASP.NET en görmezden ve XML SERİ, ve IHttpHandler uygulama ile XML belgesi oluşturarak tüm bu yapmak. O halde biraz düşük seviyede geliyor.

Benim sorunlarım ASP.NET MVC kullanarak ya benim kısıtlamaları (örneğin POST kullanarak ve fazla ilgilenmiyorsun parametre) rahatlatıcı ya da çözülebilir olduğunu fark ettim, ama benim gereksinimleri gerçekten mantıksız mı?

Belki ASP.NET sadece ölçek değilaşağıapp? bu tür Aptallık ettim, ve bunu yapmanın çok basit bir yolu var sadece bulamadım. ama çok büyük olasılıkla bir alternatif var:

Herhangi bir düşünce var mı? (Büyük bir çöküş nasıl Cue yorum, vb. Sorun değil - hiçbir zaman gerçeği tam tersi... o kadar ASP.NET uzmanı) olduğumu iddia etmedim umarım

CEVAP
10 Ocak 2009, CUMARTESİ


Bu çözüm denetimlerde tüm özellikleri de dahil olmak üzere kendi bütünlüğü içinde denetimleri programlı erişim verecektir. Ayrıca, sadece metin kutusu değerleri ALMAK isteği URL daha olacak ibrazı üzerine URL görünür "" . anlamlı

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="JonSkeetForm.aspx.cs" Inherits="JonSkeetForm" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Jon Skeet's Form Page</title>
</head>
<body>
    <form action="JonSkeetForm.aspx" method="get">
    <div>
        <input type="text" ID="text1" runat="server" />
        <input type="text" ID="text2" runat="server" />
        <button type="submit">Submit</button>
        <asp:Repeater ID="Repeater1" runat="server">
            <ItemTemplate>
                <div>Some text</div>
            </ItemTemplate>
        </asp:Repeater>
    </div>
    </form>
</body>
</html>

-Arkasında kod her şeyi yapabilirsin senin PageLoad eğer öyleyse

public partial class JonSkeetForm : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        text1.Value = Request.QueryString[text1.ClientID];
        text2.Value = Request.QueryString[text2.ClientID];
    }
}

Eğer runat="server", bir form istiyorsanız Eğer doğru değilse o zaman HTML denetimlerini kullanın. Kolay amaçlarınız için çalışmak. Sadece normal HTML etiketlerini kullanın ve runat="server" koyun ve onlara bir KİMLİK verin. Daha sonra program aracılığıyla erişebilirsinizveViewState olmadan kodu.

Tek dezavantajı "" GridViews. gibi ASP.NET sunucu denetimleri yararlı birçok erişiminiz olmayacak. Ben dahil bir Repeater benim örnek olduğum varsayarak devam etmek istiyorsanız, bu alanlar düzenli olarak sonuçları ve (bildiğim kadarıyla) Repeater tek veri sınırlama kontrol çalıştırılacak olmadan bir runat="server" öznitelik Form etiketi.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Julia Graf

    Julia Graf

    6 Mayıs 2006
  • Justin Case

    Justin Case

    3 EKİM 2011
  • wowchick16

    wowchick16

    17 Mart 2007