web-dev-qa-db-ja.com

ボタンクリックで部分ビューをレンダリング

だから私はすべてを試しましたが、小さな部分的なビューを返してdiv要素に配置することはできません。これは私の親の見解です

<button id="doctors">Doktori</button>
<button id="apointments"> Pregledi</button>

 <div id="someDiv">
 </div>

<script>
    document.getElementById("doctors").onclick = function () { myFunction() };
    function myFunction() {

        $("#someDiv").load("@Html.Raw(Url.Action("doctorsview", "HomeController")) ")
    }
</script>

.load()関数の前にalert( "message")を配置すると、メッセージが表示されますが、.load()の後に配置すると、表示されません。私はhtml.raw()の有無にかかわらず試しました。これは私のコントローラーのアクションです

public ActionResult doctorsview()
{
    return PartialView("~/Views/_Doktor.cshtml", new Doktor());        
}

どこが間違っているのですか?

9
Alen Kopic

HomeControllerの完全な名前を渡す必要はありません。Url.Action()では、コントローラー名のプレフィックスを渡す必要があります。コントローラーを作成するとき、mvcにControllerの接尾辞を追加し、ヘルパーで使用するときController接頭辞なしでコントローラ名を渡す必要があります:

public class HomeController: Controller
{
public ActionResult doctorsview()
{
  return PartialView("~/Views/_Doktor.cshtml", new Doktor());        
}

}

このようにしてください:

$("#someDiv").load('@Url.Action("doctorsview","Home")');

コントローラのそれぞれのViewsディレクトリに配置する必要があります。この場合はViews-> Home

16
Ehsan Sajjad