2017-05-11 15 views
0

私はASP .Netにはかなり新しく、いくつかのヘルプを使用することができます。ASP .Net Core 1.1 Webアプリケーションがあります。そこには、単純なオブジェクトを編集するための「編集」ビューがあります。これは、対応するコントローラがそれにルーティングされたときに呼び出されます。 、私はそのページに移動したときにそう編集ビューにオブジェクトデータが設定されていない

namespace InspectionsTestClient.Models 
{ 
    //[Table("property")] 
    public class Property 
    { 

     [Key] 
     [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
     public int? Id { get; set; } 

     [MaxLength(10, ErrorMessage = "Unit number too long")] 
     [Display(Name = "Unit #")] 
     public string UnitNumber { get; set; } 

     [MaxLength(45, ErrorMessage = "BuildingName name too long")] 
     public string BuildingName { get; set; } 

     [MaxLength(45, ErrorMessage = "Street too long")] 
     public string Street { get; set; } 
    } 

} 

:これは、そのビュー呼び出すコントローラである

@model InspectionsTestClient.Models.Property 

@{ 
    ViewData["Title"] = "Edit"; 
} 

<h2>Edit</h2> 

@Html.ValidationSummary(); 

<form asp-action="Edit"> 
    <div class="form-horizontal"> 
     <h4>Property</h4> 
     <hr /> 
     <div asp-validation-summary="ModelOnly" class="text-danger"></div> 
     <input type="hidden" asp-for="Id" /> 
     <div class="form-group"> 
      <label asp-for="UnitNumber" class="col-md-2 control-label"></label> 
      <div class="col-md-10"> 
       <input asp-for="UnitNumber" class="form-control" /> 
       <span asp-validation-for="UnitNumber" class="text-danger"></span> 
      </div> 
     </div> 
     <div class="form-group"> 
      <label asp-for="BuildingName" class="col-md-2 control-label"></label> 
      <div class="col-md-10"> 
       <input asp-for="BuildingName" class="form-control" /> 
       <span asp-validation-for="BuildingName" class="text-danger"></span> 
      </div> 
     </div> 
     <div class="form-group"> 
      <label asp-for="Street" class="col-md-2 control-label"></label> 
      <div class="col-md-10"> 
       <input asp-for="Street" class="form-control" /> 
       <span asp-validation-for="Street" class="text-danger"></span> 
      </div> 
     </div> 
    </div> 
</form> 

<div> 
    <a asp-action="Index">Back to List</a> 
</div> 

@section Scripts { 
    @{await Html.RenderPartialAsync("_ValidationScriptsPartial");} 
} 

:これは図である

// GET: Property/Edit/5 
     public ActionResult Edit(int id) 
     { 
      return View(); 
     } 

は、そして、これはモデルであり、コントローラーが起動し、編集ビューが返されます。パラメータ "id"に値が設定されていることを確認しました。ただし、ブラウザで編集ビューが読み込まれると、すべての入力テキストボックスが空になります。私はそれらに問題のオブジェクトの値があらかじめ設定されていると期待します。私は何が欠けていますか?

答えて

1

あなたはそのオブジェクトをビューに戻さないため、実際に発生している問題が発生しています。実際にはあなたのケースでは、オブジェクトを取得するためにdbに行くことさえできません。

あなたはこのような何かにあなたのEditアクションを編集する必要があります。

// GET: Property/Edit/5 
public ActionResult Edit(int? id) 
{ 
    if (id == null) 
    { 
     return new HttpStatusCodeResult(HttpStatusCode.BadRequest); 
    } 

    var object = db.TableName.Find(id); 

    // db = connectionstring 
    // TableName = database table that holds the object that you want to return 

    if (object == null) 
    { 
     return HttpNotFound(); 
    } 

    return View(object); 
} 

が、これはmvermef

+0

...ことを逃しました!男、どうしてそんなに馬鹿になるの?.....ありがとうBviLLe_Kid – user1900799

1
public class PropertyController 
    { 
     private readonly ApplicationDbContext _dbContext; 
     public PropertyController(ApplicationDbContext dbContext){ 
      _dbContext = dbContext; 
     } 

    //GET: Property/Edit/5 
     public async Task<IActionResult> Edit(int id) 
     { 
      var property = await _dbContext.Property.FirstOrDefaultAsync(p => p.Id == id); 
      return View(property); 
     } 
    } 

データベースからデータをプルしてビューに送信しないと、それは常に空白になります。 Edit(int id) 2つはどちらも少し異なります。

[HttpPost]  
    [ValidateAntiForgeryToken] 
    //Post: Property/Edit/5 
    public async Task<IActionResult> Edit(int id, [Bind("Id", "UnitNumber", "BuildingNumber", "Street")] Property property) 
    { 
    if(ModelState.IsValid){ 



     } 
     else{ 

    } 
    } 

これはあなたの冒険の一部です。

+0

感謝を助けている場合、私に教えてください - 完全もちろん – user1900799

関連する問題