SORU
21 Kasım 2009, CUMARTESİ


Asp.net MVC ModelState.Net

Kimse bana ASP.NET MVC ModelState rolü (bağlantı) kısa ve öz bir tanım verebilir. Özellikle hangi durumlarda gerekli veya uygun ModelState.Clear() aramak için olduğunu bilmek istiyorum.

Biraz açık uçlu değil... özür dilerim, aslında ne yaptığımı sana yardımcı olabilir sanırım

Bir Denetleyici olarak adlandırılan Düzenleme bir Eylem Var"". Sayfa Ben ilk Sayfanın ayrıntılarını değiştirmek için bu formu görünce her şey güzel (bağlama "MyCmsPage" nesne). bir sürü iş Ben MyCmsPage biri için bir değer üreten bir düğmesini tıklatın nesnenin alanı (MyCmsPage.SeoTitle). Ürettiği ince ve güncellemeleri nesne ve ben sonra dönüş eylem sonucu yeni değiştirilmiş sayfa nesne ve bekliyoruz ilgili textbox (işlenmiş kullanarak <%= Html.TextBox("seoTitle", page.SeoTitle)%>) haberdar olmak için ... ama ne yazık ki bu görüntüler değeri eski model yüklenmiş.

ModelState.Clear() kullanarak etrafında çalıştım ama körü körüne yapmıyorum çok çalıştı neden bilmek istiyorum.

PageController:

[AcceptVerbs("POST")]
public ActionResult Edit(MyCmsPage page, string submitButton)
{
    // add the seoTitle to the current page object
    page.GenerateSeoTitle();

    // why must I do this?
    ModelState.Clear();

    // return the modified page object
     return View(page);
 }

SEO:

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<MyCmsPage>" %>
....
        <div class="c">
            <label for="seoTitle">
                Seo Title</label>
            <%= Html.TextBox("seoTitle", page.SeoTitle)%>
            <input type="submit" value="Generate Seo Title" name="submitButton" />
        </div>

CEVAP
20 NİSAN 2010, Salı


MVC bir hata olduğunu düşünüyorum. Saatlerce bu konu ile bugün mücadele etti.

Verilen bu

public ViewResult SomeAction(SomeModel model) 
{
    model.SomeString = "some value";
    return View(model); 
}

Görünümü orijinal modeli ile, değişiklikleri görmezden işler. Ben de düşündüm ki, belki bu gibi çalıştım o yüzden bana aynı model gibi değil:

public ViewResult SomeAction(SomeModel model) 
{
    var newModel = new SomeModel { SomeString = "some value" };
    return View(newModel); 
}

Ve hala orijinal modeli ile işler. Tuhaf olan şey, görünümünde bir kesme koydum ve modelini incelediğinizde, değişen değere sahip. Ama yanıt akışı eski değerlere sahiptir.

Sonunda yaptın aynı bir çözüm keşfettim

public ViewResult SomeAction(SomeModel model) 
{
    var newModel = new SomeModel { SomeString = "some value" };
    ModelState.Clear();
    return View(model); 
}

Beklendiği gibi çalışır.

Sanmıyorum bu bir"," değil mi? özelliktir

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Elly

    Elly

    3 EKİM 2005
  • TROPFEST

    TROPFEST

    27 Mart 2007
  • UCBerkeley

    UCBerkeley

    3 Mayıs 2006