Heim  >  Artikel  >  Backend-Entwicklung  >  Teilen Sie eine Beispielanalyse, wie Asp.Net MVC4 die Aktualisierung von Formularinhalten über die ID implementiert

Teilen Sie eine Beispielanalyse, wie Asp.Net MVC4 die Aktualisierung von Formularinhalten über die ID implementiert

黄舟
黄舟Original
2017-07-18 10:36:371262Durchsuche

Sobald ein Formular erstellt wurde, können die meisten seiner Felder nicht mehr bearbeitet werden. Nur einige dieser Felder können bearbeitet werden. In diesem Artikel wird Ihnen die Idee der Aktualisierung von Formularinhalten über die ID in Asp.Net MVC4 ausführlich erläutert.

Die Benutzeranforderung lautet: Sobald ein Formular erstellt wurde , die meisten Felder können nicht bearbeitet werden. Nur einige dieser Felder können bearbeitet werden.

kann nicht bearbeitet werden, indem das Attribut „disabled“ im Eingabefeld festgelegt wird. Zu diesem Zeitpunkt wird ein Fehler gemeldet, wenn der Inhalt des Formulars direkt an die Datenbank übermittelt wird, da einige Felder, die nicht null sein dürfen, dies nicht können Aufgrund des deaktivierten Attributs wird das Frontend abgerufen und dann in der Datenbank aktualisiert.

Es gibt zwei Ideen:

1 Erstellen Sie durch das Erstellen eines versteckten Formulars ein verstecktes Steuerelement für jedes deaktivierte Steuerelement, aber auf diese Weise Das Problem besteht darin, dass die Arbeitslast zu groß ist (wenn das Formular tausend Attribute hat, wissen Sie)

2. Übergeben Sie die ID und die bearbeitbaren Felder an den Hintergrund, indem Sie die ID des Formulars in der Datenbank abrufen. Zuerst werden das Objekt und seine Attributdaten anhand der ID in der Datenbank gesucht und dann werden die bearbeitbaren Felder dem Objekt zugewiesen. Nach Abschluss der Verarbeitung werden die Daten des Objekts in der Datenbank aktualisiert.

Zusammenfassend lässt sich sagen, dass die Verwendung der zweiten Denkweise klüger erscheinen kann.

Das Folgende sind die spezifischen Schritte: (Es ist nicht erforderlich, die spezifischen Schritte im Detail zu lesen, sie stammen aus dem Projekt und sind nur für meine eigene Überprüfung geeignet)

1 OutsourcingModule.cs Erstellen Sie eine Route in, um einen Zugriffspfad zu erstellen:


routes.MapRoute(
  "OutSourcingWorkSheet",//路由名
  "outsourcing/saveWorkSheet",//url路径
  new {controller = "Outsourcing", action = "SaveWorkSheet"}//映射的控制器以及对应的Action方法名
);

2.


/// <summary>
/// 保存工作票
/// ModelBinder会将前端传递过来的id在数据库中搜索出字段并且转换为outsourcing对象
/// 此时的outsourcing对象中的workSheets属性不是前端传递过来的值,而是数据库中的
/// 
/// 方法中有两个参数,outsourcing上面已经解释,workSheets是前端传递过来的第二个参数
/// </summary>
/// <param name="outsourcing"></param>
/// <param name="workSheets"></param>
/// <returns></returns>
[HttpPost]
[ActionName("SaveWorkSheet")]
[AccessRestriction("SaveWorkSheet")]
public JsonResult SaveWorkSheet(Outsourcing outsourcing,string workSheets)
{
  if (outsourcing!=null)
  {
    outsourcing.WorkSheets = workSheets;
    _outsourcingService.Save(outsourcing);
    return Json(new ABResponse(HttpStatusCode.OK));
  }
  return Json(new ABResponse(HttpStatusCode.BadRequest));
}//AB为内部项目

3. Front-End-JS-Skriptcode


$(&#39;#btn_saveWorkSheet&#39;).on(&#39;click&#39;, function () {
  if ($("input[name=workSheets]").val() == "") {
    bootbox.alert("不能为空");
  } else {
    $.ajax({
      type: "post",
      url: "/outsourcing/saveWorkSheet",
      data: {
        ID: $("#outsourcing_id").val(),
        WorkSheets: $("input[name=workSheets]").val()
      },
      dataType: "json",
      success: function (data) {
        if (data.Code == 200) {
          bootbox.alert("修改成功,即将刷新");
          setTimeout(function () {
            location.reload();
          }, 1000);
        } else {
          bootbox.alert("提交失败,请稍后再试");
        }
      }
    });
  }
});

Tatsächlich ist die Idee sehr einfach, aber ich habe die meiste Zeit daran gearbeitet Der Tag - -; Ich bin auch auf ein Big Pit gestoßen:

In der Parameterliste des zweiten Codes habe ich zunächst die Zeichenfolge workSheets als WorkSheets geschrieben. Zu diesem Zeitpunkt erschien eine blaue Wellenlinie unter dem Text. Nach Alt+Eingabe forderte das System zum Umbenennen in Arbeitsblätter auf, sodass ich zur Bestätigung einfach die Eingabetaste drückte. Dann kann das WorkSheets-Feld nicht mehr gespeichert oder aus der Datenbank gelesen werden. Nach einer langen Suche mit Hilfe eines Kollegen stellte ich fest, dass sich herausstellte, dass während des Prozesses der Umwandlung von Groß- in Kleinbuchstaben auch die Felder in der DBML-Datei in Kleinbuchstaben geändert wurden, was dazu führte, dass sie nicht mit der Datenbank übereinstimmen konnten.

Einige Kenntnisse, die ich bei der Ausführung dieser Funktion gelernt habe:

Wenn die ID einer Eingabe „apple“ ist, kann sie wie folgt abgerufen werden:


var apple = $("#apple").val();

Wenn der Name einer Eingabe „Apple“ ist, kann sie wie folgt abgerufen werden:


var apple = $("input[name=apple]").val();

Es gibt noch etwas, was ich gerade gelernt habe:


$("#fruit").find("input:not(input[name=apple]),textarea,select").attr("disabled", true);
//从id为fruit的父元素里面寻找所有的input、textarea和select控件以及其值,但是除去name为apple的控件

Außerdem werde ich die Ajax-Methode I zusammenfassen habe es fast vergessen, nachdem ich es längere Zeit nicht benutzt habe:


$.ajax({
  type:"post",//可以选择post或者method
  url:"",//url接口
  data:{
    //参数列表
  },
  success:function(data){
    //如果访问url成功,data就是该url接口自动返回的数据
  }
})

Zusammenfassung

Das obige ist der detaillierte Inhalt vonTeilen Sie eine Beispielanalyse, wie Asp.Net MVC4 die Aktualisierung von Formularinhalten über die ID implementiert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn