>  기사  >  백엔드 개발  >  Asp.Net MVC4가 ID를 통해 양식 콘텐츠 업데이트를 구현하는 방법에 대한 분석 예를 공유하세요.

Asp.Net MVC4가 ID를 통해 양식 콘텐츠 업데이트를 구현하는 방법에 대한 분석 예를 공유하세요.

黄舟
黄舟원래의
2017-07-18 10:36:371259검색

양식이 생성되면 대부분의 필드를 편집할 수 없습니다. 이 필드 중 일부만 편집할 수 있습니다. 이 기사에서는 Asp.Net MVC4에서 id를 통해 양식 콘텐츠를 업데이트하는 아이디어에 대해 자세히 설명합니다. 필요한 친구는 이를 참조할 수 있습니다.

사용자 요구 사항은 다음과 같습니다. 양식이 생성되면 대부분의 필드는 편집할 수 없습니다. 이 필드 중 일부만 편집할 수 있습니다.

입력 입력 상자에 비활성화 속성을 설정하면 편집 불가능이 달성됩니다. 이때 null이 될 수 없는 일부 필드를 가져올 수 없기 때문에 데이터베이스의 제출 양식 내용에 직접 오류가 보고됩니다. 비활성화된 속성으로 인해 프런트엔드에서 업데이트됩니다.

다음 두 가지 아이디어가 있습니다.

1. 숨겨진 폼을 생성하여 비활성화된 컨트롤 각각에 대해 숨겨진 컨트롤을 생성하지만 문제는 작업량이 너무 크다는 것입니다(폼에 속성이 천 개이면 아시죠)

2. 데이터베이스에서 양식의 ID를 가져오고 ID와 편집 가능한 필드를 백그라운드로 전달합니다. 먼저 개체와 해당 속성 데이터를 데이터베이스에서 ID로 검색한 다음 편집 가능한 필드를 개체에 할당합니다. 처리가 완료된 후 개체의 데이터가 데이터베이스에 업데이트됩니다.

결론적으로 두 번째 사고방식을 사용하는 것이 더 현명해 보일 수 있습니다.

다음은 구체적인 단계입니다. (특정 단계를 자세히 읽을 필요는 없습니다. 프로젝트에서 추출했으며 자체 검토에만 적합합니다.)

1 OutsourcingModule.cs에서 경로를 생성합니다. a 액세스 경로:


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 script code


$(&#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("提交失败,请稍后再试");
        }
      }
    });
  }
});

사실 아이디어는 매우 간단하지만 대부분의 작업을 진행했습니다. 오늘의 - -; 우리는 큰 함정에 빠졌습니다.

두 번째 코드의 매개변수 목록에서 처음에는 workSheets라는 문자열을 WorkSheets로 썼습니다. 이때 텍스트 아래에 파란색 물결선이 나타납니다. Alt+Enter를 누르면 시스템에서 workSheets의 이름을 바꾸라는 메시지가 표시되므로 Enter를 눌러 확인했습니다. 그러면 WorkSheets 필드를 더 이상 데이터베이스에 저장하거나 읽을 수 없습니다. 동료의 도움으로 오랜 검색 끝에 대문자를 소문자로 변경하는 과정에서 dbml 파일의 필드도 소문자로 변경되어 데이터베이스와 일치하지 않는 것으로 나타났습니다.

이 기능을 수행하면서 배운 지식:

입력의 ID가 apple이면 다음과 같이 얻을 수 있습니다. 이것은 제가 이미 알고 있는 것입니다.


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

입력의 이름이 다음과 같은 경우입니다. apple , 그러면 다음과 같이 얻을 수 있습니다. 이것이 제가 방금 배운 것입니다:


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

또한 많은 입력에서 특정 이름을 제거하면 제가 방금 배운 또 다른 것이 있습니다:


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

추가로 , Ajax 방법을 요약하겠습니다. 오랜만입니다. 잊어버릴 필요가 없습니다.


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

Summary

위 내용은 Asp.Net MVC4가 ID를 통해 양식 콘텐츠 업데이트를 구현하는 방법에 대한 분석 예를 공유하세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.