最後達到了所需的功能。
這是怎樣我都做到了
視圖(從進行呼叫在哪裏)
<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>
進一步查找與螢火蟲,我可以看到,響應包含腳本
<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">
但是發現生成的頁面不包括我找了個理由腳本here
因此,這解決了我的問題,並給了我一個原因背後的原因是爲什麼我無法看到或觀看來自Ajax響應的腳本標記。
親愛的@Darin我知道你的解決方案,但我的問題是,我想調用的JavaScript方法使用viewbag出於某種原因,因此只能在運行時定義其他將不正確函數例如function test(){var readonly = @ Viewbag.Readonly; if(readonly){/ * some code * /} else {/ * some other code * /}} –
此外,ViewBag的這個值在Ajax調用的控制器方法中設置,因此在方法之前無法定義執行 –
我明白了。那麼,在這種情況下,你可以調用你的partial中定義的's'函數。看到我更新的答案。 –