Zamiana ActionLink na submit

0

Aby stworzyć raport okresowy, wybieram najpierw w radiobuttonie miesięczny, kwartalny lub roczny później w dropdownlist odpowiednio miesiąc i rok, kwartał i rok lub rok. Chciałbym też dać możliwość zrobienia tego na skróty i wybrania po prostu Ostatni miesiąc, Bierzący miesiąc itp. Tak to wygląda:

    public class CreateReportViewModel
    {
        public IEnumerable<SelectListItem> Years { get; set; }

        public IEnumerable<SelectListItem> Months { get; set; }

        public IEnumerable<SelectListItem> Quarters { get; set; }

        public ReportPeriod Period { get; set; }

    }

    public enum ReportPeriod
    {
        Years,
        Months,
        Quarters,
        CurrentMonth,
        LastMonth
    }
@using (Html.BeginForm())
{
    <div class="row">
        <div class="col-md-2 table-bordered">
            <div>
                @Html.RadioButtonFor(m => m.Period, ReportPeriod.Months)
            </div>
            <div>
                @Html.RadioButtonFor(m => m.Period, ReportPeriod.Quarters)
            </div>
            <div>
                @Html.RadioButtonFor(m => m.Period, ReportPeriod.Years)
            </div>
        </div>
        <div class="col-md-2 table-bordered">
            //tu będą dropdownlisty
        </div>
        <div class="col-md-2 col-md-offset-1 table-bordered">
            <p>
                @Html.ActionLink("Bierzący miesiąc", "ShowReport", new { reportPeriod = ReportPeriod.CurrentMonth}, htmlAttributes: new {@class = "btn btn-default"})
            </p>
            <p>
                @Html.ActionLink("Ostatni miesiąc", "ShowReport", new { reportPeriod = ReportPeriod.LastMonth }, htmlAttributes: new { @class = "btn btn-default" })
            </p>
        </div>
    </div>
    <div class="row">
        <div class="col-md-2 col-md-offset-2 table-bordered">
            <p>
                <input type="submit" value="Stwórz" class="btn btn-default"/>
            </p>
        </div>
    </div>
}

Teraz problem jest taki że rozbijam to na 2 kontrolery, submitem idzie do jednego, a ActionLink do drugiego. Mogę jakoś zamienić te ActionLinki na submit? I zrobić tak żeby klikając w nie ustawiał się Period w ViewModelu? Czy może jeszcze inaczej to zrobić?

1

Dwa ukryte radiobuttony na CurrentMonth i LastMonth. Linki obsluzone javascriptem (wybranie ukrytego radiobuttona + submit formularza)

0

Rozumiem że jak wybiorę "Ostatni miesiąc" to leci do jednego kontrolera a jak submit to do drugiego.
Można by to zrobić w ten sposób że:

  1. Usuniesz te actionlinki i zrobisz zamiast nich checkboxy
  2. Na submit nie sprawdzasz czy pola są wypełnione (może nie sprawdzasz, nie wiem)
  3. Masz jedną funkcję w kontrolerze, która przyjmie ten ViewModel i jeśli checkbox jest zaznaczony to po prostu zapominasz o tych pozostałych polach...
0

Chyba zrobię tak jak @Chdzk radzi.
@ne0 Nie rozumiem po co te checkboxy. Mógłbym zamiast ActionLinków po prostu dać radiobuttony, user klika radio potem submit. A chciałbym aby to się robiło jednym kliknięciem.

1 użytkowników online, w tym zalogowanych: 0, gości: 1