私のページには、実行時に生成されるボックスがほとんどありません。ボックスが「空」の場合、ユーザーは続行できず、ボックスに値が含まれている場合、ユーザーは続行できます。
私の検証は、JQuery(以下に追加)の助けを借りてうまく機能しています。しかし、ISSSUE は、現在のところ、ページを手動で更新すると機能し、生成されているボックスの背後にある理由は「部分ビュー」にあります。だから今、私は部分的なビューをリロード/リフレッシュする必要があります
以下は、検証を行うために追加した JQuery です。
<script>
$(document).ready (function () {
if ($('.type').length == $('.type:empty').length){
$("#stepAutomapConfirm").attr("disabled", true);
$("#stepAutomapConfirm").addClass("disabled").removeClass("active");
}
else {
$("#stepAutomapConfirm").attr("disabled", false);
$("#stepAutomapConfirm").addClass("active").removeClass("disabled");
}
});
</script>
JQuery のフィドルは次のとおりです: http://jsfiddle.net/aasthatuteja/xJtAV/、
注:そのようにフィドルで動作していますが、私の部分ビューでは動作していません そして以下はアクションコントローラーです:
[LoggingAspect]
[HttpGet]
public ActionResult AutomapInformation(int medCenterId, string medCenterSerialNumber, string viewName)
{
ProvisioningStepDto provisioningStepDto = ProvisioningHubProxy.Instance.GetOrCreateProvisioningStep(medCenterId, medCenterSerialNumber, WizardStep.AutomapInformation);
AutomapInformationViewModel viewModel = null;
try
{
var vaultInfo = ProvisioningHubProxy.Instance.GetMedCenterVault(medCenterSerialNumber);
viewModel = new AutomapInformationViewModel
{
MedCenterId = medCenterId,
MedCenterSerialNumber = medCenterSerialNumber,
Step = WizardStep.AutomapInformation,
VaultInfo = vaultInfo
};
if (vaultInfo.Count != 0)
{
return PartialView(viewName, viewModel);
}
}
catch (Exception ex)
{
LogManager.Logger.Error(ex);
}
viewModel = new AutomapInformationViewModel
{
MedCenterId = medCenterId,
MedCenterSerialNumber = medCenterSerialNumber,
Step = WizardStep.AutomapInformation
};
return PartialView("StepErrorView", viewModel);
}
[HttpPost]
public ActionResult AutomapInformation(AutomapInformationViewModel viewModel)
{
LogManager.Logger.Info("ProvisioningController:AutomapInformation; [HttpPost] MedCenterId: ({0}), MedCenterSerialNumber: ({1})", viewModel.MedCenterId, viewModel.MedCenterSerialNumber);
ProvisioningStepDto provisioningStepDto = ProvisioningHubProxy.Instance.GetProvisioningStep(viewModel.MedCenterSerialNumber, viewModel.Step);
provisioningStepDto.ProvisionStepStatusId = (int)ProvisioningStepStatus.Complete;
provisioningStepDto.VerifiedBy = "set current user"; //TODO: set the current user once authentication has been figured out
ProvisioningHubProxy.Instance.UpdateProvisioningStep(provisioningStepDto, viewModel.MedCenterSerialNumber);
return GetNextStep(viewModel.MedCenterId, viewModel.MedCenterSerialNumber, viewModel.Step);
}
以下は、「自動マップ」ボタンのクリックでテーブルが生成される HTML タグです。
<div id="vault_placeHolder">
@VaultRenderer.BuildVaultHtmlProvision(Model.VaultInfo, "MedCenterVault", 510, 850, 0.5)
</div>
<div role="button" class="marginTop50 marginBottom">
<input type="button" id="stepAutomap" value="Automap" class="active" />
<input type="button" id="stepAutomapBack" value="Back" class="active marginLeft50" />
<input type="button" id="stepAutomapConfirm" value="Confirm & Proceed" class="active marginLeft10" />
</div>
注:ボタンをクリックしてJQuery関数を追加しようとしましたが、更新が必要なため機能しませんでした。また、 reload(); を追加してみました。関数の最後に setTime() を使用しましたが、その時間枠内の「ボックス」が生成されていなかったため、それも役に立ちませんでした。
他に情報が必要な場合はお知らせください。
提案してください!