Как отобразить метку DisplayName до и после редактора (Engli sh + Arabi c) в MVC? - PullRequest
1 голос
/ 04 апреля 2020

Я хочу создать многоязычную систему с использованием MVC (Engli sh и Arabi c), я хочу использовать одно представление для обоих языков, я создал представление входа в систему на основе следующей модели:

public partial class WEBSITE_USERS
    {

        [DisplayName("ID / Iqamam No   -  رقم الهوية او الاقامة")]
        [Required(ErrorMessage ="This field is required يجب ادخال رقم الهوية المسجل في الملف الطبي ")]
        public string ID_NO { get; set; }

        [DisplayName("Mobile No - رقم الجوال")]
        [Required(ErrorMessage = "Mobile No is required - يجب ادخال رقم الجوال المسجل في الملف ")]
        public string MOBILE { get; set; }

        [DisplayName("Medical Record No - رقم الملف")]
        [Required(ErrorMessage = "File No is required يجب ادخال رقم الملف الطبي ")]
        }

Теперь DisplayName появилось на левой стороне,

Как я могу показать ярлык Engli sh на левой стороне и ярлык Arabi c на правой стороне редактора, чтобы показать это так пример:

ID / Iqama Нет 1010 *

ID / Iqamam No - رقم الهوية او الاقامة ---------------------------

это код представления

@model kaashtaif.Models.WEBSITE_USERS

@{
    ViewBag.Title = "Login Window - شاشة تسجيل الدخول";

}

<h2>Login</h2>


@using (Html.BeginForm("Authorise","Login",FormMethod.Post)) 
{
    @Html.AntiForgeryToken()

<div class="form-horizontal">

    <hr />
    @Html.ValidationSummary(true, "", new { @class = "text-danger" })
    <div class="form-group">
        @Html.LabelFor(model => model.ID_NO, htmlAttributes: new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.EditorFor(model => model.ID_NO, new { htmlAttributes = new { @class = "form-control" } })
            @Html.ValidationMessageFor(model => model.ID_NO, "", new { @class = "text-danger" })
        </div>
    </div>

    <div class="form-group">
        @Html.LabelFor(model => model.MOBILE, htmlAttributes: new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.EditorFor(model => model.MOBILE, new { htmlAttributes = new { @class = "form-control" } })
            @Html.ValidationMessageFor(model => model.MOBILE, "", new { @class = "text-danger" })
        </div>
    </div>

    <div class="form-group">
        @Html.LabelFor(model => model.PATIENT_NO, htmlAttributes: new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.EditorFor(model => model.PATIENT_NO, new { htmlAttributes = new { @class = "form-control" } })
            @Html.ValidationMessageFor(model => model.PATIENT_NO, "", new { @class = "text-danger" })
        </div>
    </div>

    <div class="col-md-10">
        <label>@Html.DisplayFor(model => model.LoginErrorMessage)</label>

    </div>

    <div class="form-group">
        <div class="col-md-offset-2 col-md-10">
            <input type="submit" value="Login" class="btn btn-default" />
            <input type="reset" name="name" value="Clear" class="btn btn-default" />
        </div>
    </div>
</div>
}

<div>
    @Html.ActionLink("Back to List", "Index")
</div>

@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
}

и это снимок экрана вида

enter image description here

1 Ответ

1 голос
/ 04 апреля 2020

Самый быстрый способ сделать это - поменять разметку и вручную, используя Html.DisplayNameFor(), затем разделить эту строку.

Повторите этот процесс для остальных полей ввода / группы форм.

<div class="form-group">
        <div class="col-md-3">
           @Html.DisplayNameFor(x => x.ID_NO).ToString().Split('-')[0]
        </div>
        <div class="col-md-6">
            @Html.EditorFor(model => model.ID_NO, new { htmlAttributes = new { @class = "form-control" } })
            @Html.ValidationMessageFor(model => model.ID_NO, "", new { @class = "text-danger" })
        </div>
        <div class="col-md-3">
           @Html.DisplayNameFor(x => x.ID_NO).ToString().Split('-')[1]
        </div>
</div>

Здесь происходит то, что мы получаем значение атрибута DisplayName, равное [DisplayName("ID / Iqamam No - رقم الهوية او الاقامة")], и, поскольку у вас есть разделитель, который является дефисом, мы разбиваем строку на две, используя этот - или дефис, затем отображаем строка по индексу.

...