Jak powiązać właściwość modelu widoku z inną nazwą

Czy istnieje sposób na odzwierciedlenie właściwości modelu widoku jako elementu o różnych nazwach i wartościach id na stronie HTML.

To jest główne pytanie, co chcę osiągnąć. Podstawowe wprowadzenie do pytania brzmi:

1- Mam model widoku (na przykład), który został utworzony dla operacji filtrowania po stronie widoku.

public class FilterViewModel
{
    public string FilterParameter { get; set; }
}

2- Mam akcję kontrolera, która jest tworzona w celu GETINGU wartości formularza (tutaj jest to filtr)

public ActionResult Index(FilterViewModel filter)
{
return View();
}

3- Mam pogląd, że użytkownik może filtrować niektóre dane i przesyłać parametry poprzez querystring nad przesłaniem formularza.

@using (Html.BeginForm("Index", "Demo", FormMethod.Get))
{    
    @Html.LabelFor(model => model.FilterParameter)
    @Html.EditorFor(model => model.FilterParameter)
    <input type="submit" value="Do Filter" />
}

4- I co chcę zobaczyć w wynikach renderowanego widoku to

<form action="/Demo" method="get">
    <label for="fp">FilterParameter</label>
    <input id="fp" name="fp" type="text" />
    <input type="submit" value="Do Filter" />
</form>

5- I jako rozwiązanie chcę zmodyfikować mój model widoku w następujący sposób:

public class FilterViewModel
{
    [BindParameter("fp")]
    [BindParameter("filter")] // this one extra alias
    [BindParameter("param")] //this one extra alias
    public string FilterParameter { get; set; }
}

Zatem podstawowe pytanie dotyczy BindAttribute, ale użycia właściwości typu złożonego. Ale także jeśli istnieje sposób na to, jest to znacznie lepsze. Wbudowane plusy:

1- Korzystanie z TextBoxFor, EditorFor, LabelFor i innych silnie typowanych pomocników modelu widoku może lepiej zrozumieć i komunikować się ze sobą.

2- Obsługa routingu URL

3- Brak ram przez tworzenie problemów:

Ogólnie rzecz biorąc, zalecamy, aby ludzie nie pisali niestandardowych segregatorów, ponieważ trudno jest je dobrać i są rzadko potrzebne. Problem, który omawiam w tym poście, może być jednym z tych przypadków, w których jest to uzasadnione.

Link cytatu

A także po kilku badaniach znalazłem te przydatne prace:

Powiązanie właściwości modelu z inną nazwą

Jednoetapowa aktualizacja pierwszego łącza

Oto przewodnik informacyjny

Wynik: Ale żaden z nich nie daje mi dokładnych rozwiązań. Szukam silnie wpisanego rozwiązania tego problemu. Oczywiście, jeśli znasz inny sposób, podziel się.

Aktualizacja

Podstawowe powody, dla których chcę to zrobić, to zasadniczo:

1- Za każdym razem, gdy chcę zmienić nazwę kontrolki HTML, muszę zmienić nazwę właściwości w czasie kompilacji. (Istnieje różnica Zmiana nazwy właściwości między zmianą ciągu w kodzie)

2- Chcę ukryć (kamuflaż) prawdziwe nazwy nieruchomości od użytkowników końcowych. Większość razy Zobacz nazwy właściwości modelu takie same, jak nazwy właściwości obiektów obiektów zamapowanych. (Ze względów czytelności dla programistów)

3- Nie chcę usuwać czytelności dla programisty. Pomyśl o wielu właściwościach o długości 2-3 znaków i znaczeniach mo.

4- Jest wiele modeli widoków napisanych. Zmiana ich nazw zajmie więcej czasu niż to rozwiązanie.

5- To będzie lepsze rozwiązanie (w moim POV) niż inne, które do tej pory są opisane w innych pytaniach.

questionAnswers(2)

yourAnswerToTheQuestion