Pregunta

Estoy escribiendo algunas adiciones a un sitio basado Castillo monorraíl que implica un complemento y un formulario de edición. La forma de complemento funciona bien y utiliza la POST, pero los usos de edición de formularios GET. La única diferencia principal que veo es que el método de edición se llama con el Id del objeto que se está editando en la cadena de consulta. Cuando se pulsa el botón de enviar en el formulario de edición, el único argumento pasado es este objeto Id nuevo. Aquí está el código para el formulario de edición:

<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>

Las diferencias entre esto y la forma add es la materia de la velocidad que ver con asociación y los valores de las entradas Siendo de la PropertyBag.

El Método de tratar con este en el controlador comienza así:

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 fiable se llama, sino un punto de interrupción en los Parámetros [ "Guardar"] me permite ver que el HTTPMethod es "GET" y los únicos argumentos pasados ??(en la forma y la solicitud) son los ID de objeto y las cabeceras HTTP adicionales.

Al final del día, no estoy tan familiarizado con monorraíl y esto puede ser un error estúpido de mi parte, pero me gustaría mucho agradecería que se le hizo un tonto de si se soluciona el problema! :)

Gracias

¿Fue útil?

Solución

Tengo todo esto usando un método separado en el controlador para hacer frente a guardar el cupón en lugar de uno, tanto para la carga de la forma y tratar con él de presentación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top