У меня есть страница с тегом изображения. Изображение, отображаемое тегом изображения, изменяется в зависимости от выбора изображения, сделанного во всплывающем окне. Следующие шаги, чтобы воспроизвести мои вопросы:Изменение изображения src через MVC 3 Действие
1. Click button on Main Page and display popup with selectable images
2. Click any one image in popup to create selection
3. Click "Associate" button in popup to begin association process
a. JQuery.post is called to "Associate" selected image to image in Main page
i. Code in the Controller is run and save the association in the database.
b. Upon success, the "success" function of the JQuery.post makes a call to an existing javascript function.
i. This function creates a string in the following format: "{Controller}/{Action}/{PrimaryId}/{SecondaryId}"
ii. In the function, the "src" of the image in the main page is set to the string created above.
iii. The change in "src" makes the code in the controller run which in turn returns the specified image.
iv. The popup is closed
Для всех практических целей, код работает для раздражающего вопроса, независимо от браузера, изображение не обновляется после возвращения из контроллера с помощью процесса, описанного кроме выше (во время функции «Успех» JQuery.post).
Следует отметить, что если шаги «b.i» - «b.iv» выполняются без «JQuery.post» (т. Е. Только для получения данных изображения без предварительной ассоциации), изображение обновляется каждый раз. Код, используемый ниже (отредактированные - элементы в фигурных скобках являются держателями место)
ИЗОБРАЖЕНИЯ MODIFIED
<div id="divMenuItemMedia">
<img id="imgMenuItemMedia" alt='someAlt' src='/{Controller}/{Action}/{InitialImageId}' />
</div>
кнопку для вывода POPUP
<input type="button" id="btnModifyImage" name="btnModifyImage" class="t-button" value="Change Image" onclick="showImageChooser();" />
JAVASCRIPT ФУНКЦИИ
MAIN PAGE
function GetCurrentMediaItemsByIds(pId, iId) {
//$('#imgMenuItemMedia').load(function() {
//alert("Image updated");
// });
var imgMedia = document.getElementById("imgMenuItemMedia");
var sourceUrl = '/{Controller}/{Action}/{pId}/{iId}';
//$('#imgMenuItemMedia').attr("src", sourceUrl);
imgMedia.src = sourceUrl;
InImageSelectionMode = false;
}
function showImageChooser() {
var url = '{Controller}/{DataGetterActionForPopup}';
ShowPopup(url, "#MediaChooserDialog", null);
}
POPUP
function associateMediaSelection(e) {
// The entity name is saved in hidden field in the "Edit" page
var entityName = document.getElementById("hidEntityName").value;
var contentPath = entityName + "/Associate" + entityName + "ToMediaItem";
var url = '{Controller}/{Action}';
var primaryId = {pId};
var secondaryId = {sId};
var entityId = {eId};
var data = { "entityId" : eId, "primaryId": pId, "secondaryId": sId };
var jqxhr = $.post(url, data, function (e) {
GetCurrentMediaItemsByIds(presentationId, document.getElementById("hid" + entityName + "Id").value);
closeMediaSelection();
});
}
function closeMediaSelection()
{
var windowPopup = $("#MediaChooserDialog").data('tWindow');
windowPopup.close();
}
Кто-нибудь есть идеи относительно того, что может препятствовать обновить изображение?
Как я упоминал в исходном вопросе «var sourceUrl = '/ {Controller}/{Action}/{pId}/{iId}'; является фальшивым, а текст внутри {} - это просто заполнители для реального текста в моем коде (необходимо, чтобы запутать что-то, чтобы не раскрывать, что такое мой код) – fuzzlog
Кроме того, «var sourceUrl = '/ {Controller}/{Action}/{ Pid}/{IID} ';» это только результат, который видит клиент, фактический код действительно использует «@ Url.Action ..» и «@ Url.Content ....» по мере необходимости. – fuzzlog
Извините, было довольно много деталей, чтобы попытаться отследить там выше –