Monorail - подача формы с использованием get вместо Post

StackOverflow https://stackoverflow.com/questions/4507780

Вопрос

Я пишу некоторые дополнения на сайт, основанный на монорельсе, включающий добавление и форму редактирования. Форма добавления работает нормально и использует сообщение, но форма редактирования использует Get. Единственное основное различие, которое я вижу, состоит в том, что метод редактирования вызывается с идентификатором объекта, отредактированного в строке запроса. Когда кнопка «Отправить» нажимается в форме редактирования, единственный сданный аргумент - это идентификатор объекта снова. Вот код для формы редактирования:

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

Различия между этим и формой добавления - это скорость, связанная с ассоциацией и значениями входов, полученных от сумки свойства.

Метод, касающийся этого на контроллере, начинается так:

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)
    {
        ...
    }
}

Он надежно вызывается, но точка останова на параметрах [«Сохранить»] позволяет мне увидеть, что HTTPMethod является «Get», а единственные аргументы (в форме и запросе) - это идентификатор объекта и дополнительные заголовки HTTP.

В конце дня я не так знаком с Monorail, и это может быть глупой ошибкой от моего имени, но я бы очень ценил, что меня замолчало, если это решает проблему! :)

Спасибо

Это было полезно?

Решение

Я обошел это, используя отдельный метод на контроллере, чтобы справиться с сохранением купона вместо одного для загрузки формы, так и для работы с его подчинением.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top