есть ли способ упростить этот код? vb.net [дубликат]

Я попробовал работать tnx @Anastasiosyal, я хочу поделиться им с этим потоком.

Я не уверен, как поля ввода не запускались, когда я опустошал поля. Но мне удалось вызвать каждое обязательное поле индивидуально, используя:

$(".setting-p input").bind("change", function () {
        //Seven.NetOps.validateSettings(Seven.NetOps.saveSettings);
        /*$.validator.unobtrusive.parse($('#saveForm'));*/
        $('#NodeZoomLevel').valid();
        $('#ZoomLevel').valid();
        $('#CenterLatitude').valid();
        $('#CenterLongitude').valid();
        $('#NodeIconSize').valid();
        $('#SaveDashboard').valid();
        $('#AutoRefresh').valid();
    });

вот мой взгляд

@using (Html.BeginForm("SaveSettings", "Settings", FormMethod.Post, new {id = "saveForm"}))
{
    <div id="sevenRightBody">
        <div id="mapMenuitemPanel" class="setingsPanelStyle" style="display: block;">
            <div class="defaultpanelTitleStyle">Map Settings</div>
            Customize the map view upon initial navigation to the map view page.
            <p class="setting-p">@Html.LabelFor(x => x.NodeZoomLevel)</p>
            <p class="setting-p">@Html.EditorFor(x => x.NodeZoomLevel) @Html.ValidationMessageFor(x => x.NodeZoomLevel)</p>
            <p class="setting-p">@Html.LabelFor(x => x.ZoomLevel)</p>
            <p class="setting-p">@Html.EditorFor(x => x.ZoomLevel) @Html.ValidationMessageFor(x => x.ZoomLevel)</p>
            <p class="setting-p">@Html.LabelFor(x => x.CenterLatitude)</p>
            <p class="setting-p">@Html.EditorFor(x => x.CenterLatitude) @Html.ValidationMessageFor(x => x.CenterLatitude)</p>
            <p class="setting-p">@Html.LabelFor(x => x.CenterLongitude)</p>
            <p class="setting-p">@Html.EditorFor(x => x.CenterLongitude) @Html.ValidationMessageFor(x => x.CenterLongitude)</p>
            <p class="setting-p">@Html.LabelFor(x => x.NodeIconSize)</p>
            <p class="setting-p">@Html.SliderSelectFor(x => x.NodeIconSize) @Html.ValidationMessageFor(x => x.NodeIconSize)</p>
        </div>

и мой Entity

   public class UserSetting : IEquatable<UserSetting>
    {
        [Required(ErrorMessage = "Missing Node Zoom Level.")]
        [Range(200, 10000000, ErrorMessage = "Node Zoom Level must be between {1} and {2}.")]
        [DefaultValue(100000)]
        [Display(Name = "Node Zoom Level")]
        public double NodeZoomLevel { get; set; }

        [Required(ErrorMessage = "Missing Zoom Level.")]
        [Range(200, 10000000, ErrorMessage = "Zoom Level must be between {1} and {2}.")]
        [DefaultValue(1000000)]
        [Display(Name = "Zoom Level")]
        public double ZoomLevel { get; set; }

        [Range(-90, 90, ErrorMessage = "Latitude degrees must be between {1} and {2}.")]
        [Required(ErrorMessage = "Missing Latitude.")]
        [DefaultValue(-200)]
        [Display(Name = "Latitude")]
        public double CenterLatitude { get; set; }

        [Range(-180, 180, ErrorMessage = "Longitude degrees must be between {1} and {2}.")]
        [Required(ErrorMessage = "Missing Longitude.")]
        [DefaultValue(-200)]
        [Display(Name = "Longitude")]
        public double CenterLongitude { get; set; }

        [Display(Name = "Save Dashboard")]
        public bool SaveDashboard { get; set; }
.....
}
11
задан Steven Doggart 26 February 2013 в 16:30
поделиться

5 ответов

Вы можете получить доступ к элементам управления по имени с помощью свойства Form.Controls, например:

Dim text1 As TextBox = CType(Me.Controls("text_1"), TextBox)
22
ответ дан Steven Doggart 25 August 2018 в 12:28
поделиться

Название темы и ваше описание проблемы, похоже, немного отличаются друг от друга.

Чтобы ответить на ваш заголовок (чтобы найти элемент управления по его названию ) используйте следующее:

Dim myControlToFind = LayoutRoot.FindName("NAMEOFCONTROL")

Более подробную информацию об этом методе можно найти здесь здесь .

Чтобы ответить на описание вашей проблемы как (для доступа к элементу управления, созданного кодом после его нажатия) выполните следующие действия:

В цикле, в котором вы создаете элемент управления, добавьте следующий обработчик

Addhandler YOURCONTROL.Clicked, AddressOf Textbox_Clicked

... и тогда это обработает событие click

Private Sub Textbox_Clicked(sender as object, e as RoutedEventArgs)

Dim tbClicked = Ctype(sender, TextBox)
'You can now access any of the properties of the textbox, for example

Dim txt as String = tbClicked.Text
Dim name as String = tbClicked.Name
Dim height as Double = tbClicked.Height

End Sub
0
ответ дан freschx 25 August 2018 в 12:28
поделиться
Dim sometext As TextBox = CType(Me.Controls("sometext "), TextBox)
0
ответ дан Muhammad Saeed 25 August 2018 в 12:28
поделиться

Ниже приведен код.

Dim oObj As Object = Me.Controls.Find("control name", True).FirstOrDefault()
Obj.Property = Value

Надеюсь, это поможет.

2
ответ дан thewaywewere 25 August 2018 в 12:28
поделиться

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

CType(Controls("NAME_OF_CONTROL"), Control)

Обратите внимание, что вместо того, чтобы точно определять тип управления, таких как «TextBox» или «Button», вы просто указываете «Control». Это позволяет вам универсально изменять любой тип управления, не указывая его тип.

Я не мог найти его нигде, поэтому я решил поделиться им!

7
ответ дан Timothy 25 August 2018 в 12:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: