문제

Windows Forms와 3 단계 아키텍처에서 온 MVC가 꽤 많이 있습니다.

데이터베이스에서 채워진 계단식 DropDownLest (DDL)를 사용하여 알아 내려고합니다. MS SQL Server 2012, VS 2013

현재 DDL에서 여러 답변에서 선택할 수있는 사용자 설문지에서 작동합니다. 다음 질문에 대한 답변 (다시 DDL)을 변경 해야하는 일부 선택 사항에 따라 다릅니다.

데이터베이스 :

테이블 DDLStacks :

StackId | StackName
   1    | Berry
   2    | BerryColor
   3    ....
.

테이블 DDLStackContents (SCID 스택 컨텐츠 ID, 인덱싱 목적)

SCId | StackId | GroupId | Key | Value
--------------------------------------
1 | 1 | Null | 1 | Grape
2 | 1 | Null | 2 | Avocado
3 | 1 | Null | 3 | Banana
4 | 2 | Null | 1 | Yellow
5 | 2 | Null | 2 | Green
6 | 2 | 1 | 3 | Red
7 | 2 | 1 | 4 | Orange
8...
.

절차 :

   CREATE PROCEDURE [dbo].[spDLLSelect]
        @p_StackName_in VARCHAR(20),
        @p_GroupId_in Int = null
    AS 
    BEGIN
        SELECT [Key],Value FROM DDLStackContents
        WHERE StackID IN (SELECT StackId FROM DDLStacks WHERE StackName = @p_StackName_in)
        AND (GroupId = @p_GroupId_in OR @p_GroupId_in IS null) 
        Order By [Key] 
    END
.

DDLStacks 홀로 질문을 보유 할 수 있으므로 DDLStackContents는 해당 질문에 대한 답변을 보유합니다.

그룹이있는 경우 해당 그룹의 답변을 선택할 수 있습니다. 그렇지 않으면 특정 스택에 대한 모든 답변을 선택할 수 있습니다.

이제 SPDLLSELECT에 액세스하기 위해 ADO.NET 엔터티 데이터 모델을 만들었습니다.

이제 나의 과일 모델은 이것이

public class FruitModel
{
    public IEnumerable<SelectListItem> BerryList { get; set; }
    public IEnumerable<SelectListItem> BerryColorList { get; set; }

    [Display(Name = "Berry")]
    public byte? Berry { get; set; }

    [Display(Name = "BerryColor")]
    public byte? BerryColor { get; set; }
}
.

내 컨트롤러는 이쪽이기 때문에 Berry의 유형에 따라 색을 선택해야합니다. Avacado가 모두를 선택하면, 바나나가 단지 1을 선택하면

public class HomeController : Controller
{
    public ActionResult Index()
    {
        CherryEntities db = new CherryEntities();
        var model = new FruitModel();
        model.BerryList = new SelectList(db.spDLLSelect("Berry", null), "Key", "Value");
        //model.BerryColorList = new SelectList(db.spDLLSelect("BerryColor", null), "Key", "Value");
        //model.BerryColorList = new SelectList(db.spDLLSelect("BerryColor", 1), "Key", "Value");
        return View(model);
    }
}   
.

여기 내 견해가 있습니다 :

@using (Html.BeginForm("Register2", "Account", FormMethod.Post, new { @class = "form-horizontal", role = "form" }))
{

<div class="form-group">
    @Html.LabelFor(m => m.Berry, new { @class = "col-md-2 control-label" })
    <div class="col-md-10" >
        @Html.DropDownListFor(m => m.Berry, Model.BerryList, "Please Select")
    </div>
</div>

<div class="form-group">
    @Html.LabelFor(m => m.BerryColor, new { @class = "col-md-2 control-label" })
    <div class="col-md-10">
        @Html.DropDownListFor(m => m.BerryColor, Model.BerryColorList, "Please Select")
    </div>
</div>

}
.

이것은 내 기본 코딩이며,이 작업을 수행하기 위해 다양한 방법을 시도했습니다. Ajax를 강력하게 입력 한 코드로 올바른 방법을보고 싶습니다.

부분의 뷰를 사용할 수 있습니까? 이견있는 사람?

도움이 되었습니까?

해결책

이미보기가 강하게 입력 한 모델을 가지고 있습니다.드롭 다운 목록에 변경 이벤트를 추가해야합니다 (자세한 내용은 아래 참조 링크 참조).변경 이벤트에서 선택한 값에 따라 값을로드 할 수 있습니다.베리를 선택하면 베리 I.E 포도, 아보카도에 해당 값을 가져와야합니다.

데이터 세트가 큰 경우 유용한 JavaScript를 사용하여 값을로드 할 수 있습니다.또는 모든 데이터로보기를 사전로드 할 수 있으며 해당 경우 UI에서 선택한 질문에 따라 답변을 필터링해야합니다.

실제로이 작업을 수행하는 방법에 대한 도움을 얻으려면 MVC 4 의 Cascading DropdownList.귀하의 필요에 따라 비슷한 예제를 찾을 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top