Во время разработки ASP.Net я часто не уверен в погоде, я должен выполнять некоторые функции, используя запрос ajax, и обрабатывать все это на клиенте с помощью JavaScript. Я часто хочу использовать функции Jjery ajax для ускорения разработки и улучшения ремонтопригодности, хотя я могу достичь такого же результата, не обращаясь к серверу.Как решить, когда использовать Ajax против Javascript для ремонтопригодности
Вот один из примеров. В моем представлении MVC мне нужно обновить частичный вид в ответ на нажатие кнопки. Вот упрощенная версия моего частичного вида
@foreach (Requestbox.Code.XmlContentField xmlControl in Model.RequestContentControls)
{
if (Model.IsInEditMode)
{
ViewContext.Writer.Write("<div class='editDiv'>
<a href='#' onclick='EditClick()'>Edit</a>
<a href='#' onclick='DeleteClick()'>Delete</a>");
}
switch (xmlControl.ControlType)
{
case "TextBoxField":
<div class="clearfix">
@Html.DevExpress().Label(settings => {
settings.Name = xmlControl.FieldName + "Label";
settings.AssociatedControlName = xmlControl.FieldName + "TextBox";
settings.Text = xmlControl.LabelText;
}).GetHtml()
<div class="input">
@Html.DevExpress().TextBox(settings => {
settings.Name = xmlControl.FieldName + "TextBox";
MvcExtensionHelpers.SetTextBoxSettings(settings);
settings.ControlStyle.CssClass += " full-width";
}).GetHtml()
</div>
</div>
break;
case "Header":
string header = string.Format("<{0}>{1}</{0}>", xmlControl.HeaderType,xmlControl.Value);
@Html.Raw(header)
break;
}
if (Model.IsInEditMode)
{
ViewContext.Writer.Write("</div>");
}
}
Когда кнопка Edit щёлкнула мне нужно обернуть каждый из моих разделов в DIV и добавьте 2 узловые элементы с OnClick функций внутри. Я могу сделать это, используя запрос ajax post и установив Model с «IsInEditMode в true», вот код, который я мог бы вызвать, который заменяет текущее частичное представление новым.
function EnableEditClick() {
$.post(rootDir + "Admin/EditClick",null,
function(partialViewResult){
$("#refTable").html(partialViewResult);
});
}
Вот действий, которые могли бы обработать запрос Аякса
public ActionResult EditClick()
{
MyModel model = new MyModel();
model.IsInEditMode = true;
return PartialView("CustomRequest", model);
}
Это одно решение, другой будет обрабатывать все это на клиенте с помощью JQuery для выбора каждого из моих элементов, и вставлять элементы привязки напрямую. Я также мог бы вывести какой-то код из представления. Так что-то вроде этого (Не проверял этот код, но я надеюсь, что вы получите идею)
function EditClick()
{
var elements = $('.myTable .clearfix')
elemtns.append(' <a href='#' onclick='EditClick()'>Edit</a>
<a href='#' onclick='DeleteClick()'>Delete</a>');
}
Я разрываюсь на который будет лучше ремонтопригодность мудрым, как и Аякса, как я не должны писать HTML на страницах JavaScript, и я думаю, что это будет более понятным и понятным при обновлении кода. Однако я использую ненужный запрос на сервер, когда я могу обработать все на клиенте.
Так что мои вопросы в том, должен ли я всегда делать все на клиенте, если это возможно, даже в результате ремонтопригодности. Любая обратная связь на моем примере также очень ценится.