Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Problem Navigation Framework UriMapping (Silverlight)

Îåêßíçóå áðü ôï ìÝëïò KelMan. Τελευταία δημοσίευση από το μέλος KelMan στις 12-03-2010, 08:50. Υπάρχουν 2 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  11-03-2010, 22:25 57624

    Problem Navigation Framework UriMapping (Silverlight)

    Ας βάλω κι εδώ την ίδια ερώτηση που έχω βάλει στα silverlight forums (αλλά δεν έχω πάρει απάντηση):

    Ξεκινούμε με ένα νέο Silverlight Navigation Application. Στο MainPage.xaml, προσθέτουμε ένα UriMapping κι έτσι το Frame γίνεται ως εξής:

          <navigation:Frame x:Name="ContentFrame" Style="{StaticResource ContentFrameStyle}" 
                                  Source="/Home" Navigated="ContentFrame_Navigated" NavigationFailed="ContentFrame_NavigationFailed">
            <navigation:Frame.UriMapper>
              <uriMapper:UriMapper>
                <uriMapper:UriMapping Uri="" MappedUri="/Views/Home.xaml"/>
                <uriMapper:UriMapping Uri="/{pageName}" MappedUri="/Views/{pageName}.xaml"/>
                <uriMapper:UriMapping Uri="/{pageName}/{test}" MappedUri="/Views/{pageName}.xaml?test={test}" />
              </uriMapper:UriMapper>
            </navigation:Frame.UriMapper>
          </navigation:Frame>

    Τώρα, σύμφωνα με αυτά που λέει στο MSDN, όταν θα δώσουμε http://localhost:10961/SilverlightApplication1TestPage.aspx#/Home/123 θα πρέπει να ανοίξεi η εφαρμογή στο Home.xaml και μέσα στο OnNavigatedTo, το NavigatedContext.QueryString dictionary θα πρέπει να περιέχει το key/value pair "test/123". Ωστόσο, αντί γι αυτό μου ανοίγει ένα error window με το μήνυμα "Conversion from string "Page not found: \" + uri.ToStrin" to type 'Long' is not valid.". Επιπρόσθετα, δεν μπορώ να βρω από που προκύπτει αυτό το παράθυρο γιατί κανένα από τα δύο break points στο ContentFrame's NavigationFailed event handler και το Application UnhadledException event handler δεν χτυπάει.

    Μήπως θα μπορούσε κάποιος να επιβεβαιώσει αυτή τη συμπεριφορά; Μυρίζομαι ότι γενικότερα κάτι δεν πάει καλά γιατί τα πρώτα δύο mappings παίζουν. Δεν ξέρω αν φταίει το ότι έχω εγκαταστήσει WCF RIA Services Beta (για VS2008). Το ωραίο είναι ότι δεν έχω πετύχει ούτε ένα sample που να δουλεύει με uri mapping πέραν του κλασικού. Όλα τα blogs λένε "μπορείς να κάνεις αυτό κι αυτό κι αυτό" αλλά κανένα working code sample.

     


    Vir prudens non contra ventum mingit
  •  12-03-2010, 03:00 57625 σε απάντηση της 57624

    Απ: Problem Navigation Framework UriMapping (Silverlight)

    Λοιπόν Μάνο το δοκίμασα και όντως το συγκεκριμένο είχε πρόβλημα. Το λάθος που έπερνα όμως ήταν Page Not Found και όχι αυτό που πέρνεις εσύ.

    Κάνοντας την εξής αλλαγή όμως έπαιξε κανονικά

                <navigation:Frame x:Name="ContentFrame" Style="{StaticResource ContentFrameStyle}" 
                                  Source="/Home" Navigated="ContentFrame_Navigated" NavigationFailed="ContentFrame_NavigationFailed">
                    <navigation:Frame.UriMapper>
                        <uriMapper:UriMapper>
                            <uriMapper:UriMapping Uri="" MappedUri="/Views/Home.xaml"/>
                            <uriMapper:UriMapping Uri="/{pageName}/{query}" MappedUri="/Views/{pageName}.xaml?query={query}" />
                            <uriMapper:UriMapping Uri="/{pageName}" MappedUri="/Views/{pageName}.xaml" />
                        </uriMapper:UriMapper>
                    </navigation:Frame.UriMapper>
                </navigation:Frame>
    Από ότι φαίνεται το πρόβλημα είναι στο Ordering βρίσκει το πρώτο που κάνει match και όχι το πιο σωστό.
    MSc Konstantinos Pantos
    MCP Software Engineer
    http://blog.pantos.name
    http://kostas.pantos.name
  •  12-03-2010, 08:50 57626 σε απάντηση της 57625

    Απ: Problem Navigation Framework UriMapping (Silverlight)

    Σωστά, fooled by the FM (FM όπως λέμε RTFM). Λέει στο MSDN:

    The URI request is mapped to the first pattern that matches the request. Therefore, add your URI mapping instances from most specific to most general.

    Υπέθεσα ότι το "/{pageName}" δεν έκανε match το request. Θα έπρεπε να το έχουν διατυπώσει διαφορετικά ως προς το partial match.

     


    Vir prudens non contra ventum mingit
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems