ついに必要な機能を実現しました。
これが私がやった方法です
ビュー (呼び出しが行われた場所から)
<input type="submit" value="Create" />
@using (Ajax.BeginForm("Edit", "Home", new AjaxOptions {OnSuccess="DisableControls()",
InsertionMode= InsertionMode.Replace,UpdateTargetId="DivToUpdate" }))
コントローラー
[HttpPost]
public ActionResult Edit(FormCollection fc)
{
if (fc.Keys[0].ToString().TrimEnd() == "Display")
{
TempData["readonly"] = "readonly";
}
else
TempData["readonly"] = "";
呼び出された部分ビュー
@model TestApp.Models.CUSTOMER
@{
ViewBag.Title = "Edit";
}
<script>
function s() {
var readonly="@TempData["readonly"].ToString()";
if(readonly=="readonly")
{
$('input[type="text"],select').attr('readonly','readonly');
$("#Save").remove();
}
}
</script>
<h2 style="padding: 0px; margin-top: 0px;">
Edit</h2>
@using (Html.BeginForm("Save", "Home"))
{
@Html.ValidationSummary()
<fieldset>
<legend>CUSTOMER</legend>
<table style="margin: 0px auto;">
<tr>
<td>
alert()
ここで、前回の失敗の試行の原因を診断する際に、スクリプトが実行されているかどうかを確認するためにスクリプトにを書きました。
<script>
function s() {
var readonly="@TempData["readonly"].ToString()";var s="hi"+ prompt("name","");
alert(s);
if(readonly=="readonly")
{ //To make all text boxes and dropdown readonly
$('input[type="text"],select').attr('readonly','readonly');
$("#Save").remove();//To Remove the save button
}
}
</script>
firebug をさらに調べると、応答にスクリプトが含まれていることがわかりました
<script>
function s() {
var readonly="readonly";var s="hi"+ prompt("sdfs","kakaji");
alert(s );
if(readonly=="readonly")
{
$('input[type="text"],select').attr('readonly','readonly');
$("#Save").remove();
}
}
</script>
<form action="/Grid/Save" method="post"><div class="validation-summary-valid" data-valmsg-summary="true">
<ul><li style="display:none"></li></ul>
</div>
<fieldset>
<legend>CUSTOMER</legend>
<table style="margin: 0px auto;">
<tr>
<td>
<div class="editor-label">
しかし、生成されたページには、ここで理由を見つけたスクリプトが含まれていないことがわかりました
したがって、これは私の問題を解決し、なぜAjax応答からスクリプトタグを表示または監視できなかったのかという事実の背後にある理由を教えてくれました。