Frage

Ich schreibe einige Ergänzungen zu einem Schloss Monorail-basierten Website beteiligt einen Add und ein Formular bearbeiten. Die Add Form funktioniert und verwendet POST aber die Bearbeitung von Formular Anwendungen zu bekommen. Der einzige große Unterschied, den ich sehen kann, ist, dass das Bearbeitungsverfahren mit der ID des Objekts aufgerufen wird, in der Abfragezeichenfolge bearbeitet wird. Wenn die Submit-Button auf der Bearbeitungs Form gedrückt wird, übergeben das einzige Argument ist auch in diesem Objekt Id. Hier ist der Code für das Bearbeiten-Formular:

<form action="edit.ashx" method="post">
<h3>Coupon Description</h3>
<textarea name="comments" width="200">$comments</textarea>
<br/><br/>
<h3>Coupon Actions</h3>
<br/>
<div>Give Stories</div>

<ul class="checklist" style="overflow:auto;height:144px;width:100%">
#foreach ($story in $stories.Values)
    <li>
    <label>
    #set ($associated = "")
    #foreach($storyId in $storyIds)
        #if($story.Id == $storyId)
            #set($associated = " checked='true'")
        #end
    #end
    <input type="checkbox" name="chk_${story.Id}" id="chk_${story.Id}" value="true" class="checkbox" $associated/>
    $story.Name
</label>
</li>
#end
</ul>
    <br/><br/>
<div>Give Credit Amount</div>
<input type="text" name="credit" value="$credit" />
<br/><br/>

<h3>Coupon Uses</h3>
<input type="checkbox" name="multi" #if($multi) checked="true" #end /> Multi-Use Coupon?<br/><br/>
<b>OR</b>
<br/>
<br/>
Number of Uses per Coupon: <input type="text" name="uses" value="$uses" />
<br/>

<input type="submit" name="Save" />

</form>

Die Unterschiede zwischen diesem und der Add Form sind die Geschwindigkeit Sachen mit Verein und den Werten der Eingänge von der PropertyBag sein zu tun.

Der Umgang Methode mit diesem auf den Controller beginnt wie folgt:

public void Edit(int id)
{
    Coupon coupon = Coupon.GetRepository(User.Site.Id).FindById(id).Value;
    if(coupon == null) {
        RedirectToReferrer();
        return;
    }

    IFutureQueryOfList<Story> stories = Story.GetRepository(User.Site.Id).OnlyReturnEnabled().FindAll("Name", true);

    if (Params["Save"] == null)
    {
        ...
    }
}

Es wird zuverlässig genannt, aber ein Breakpoint auf dem Params [ „Save“] läßt mich sehen, dass der Httpmethod ist „GET“ und die einzigen Argumente übergeben (in Form und der Request) sind die Objekt-ID und zusätzliche HTTP-Header.

Am Ende des Tages bin ich nicht so vertraut mit Monorail- und dies kann ein dummer Fehler in meinem Namen, aber ich würde es sehr schätzen, ist ein Narr aus aus, wenn es das Problem behebt! :)

Danke

War es hilfreich?

Lösung

Ich habe um dieses durch eine separate Methode auf dem Controller mit dem Speichern der Coupon statt einem für beide Laden Sie das Formular zu behandeln und damit die Unterwerfung zu tun.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top