/ / Промяна на изображението src чрез MVC 3 Action - jquery, image, asp.net-mvc-3

Промяна на изображението src чрез MVC 3 Action - jquery, image, asp.net-mvc-3, src

Имам страница с етикет с изображение. Изображението, показвано от маркера на изображението, се променя в зависимост от избора на изображение, направено в изскачащ прозорец. По-долу са описани стъпките за възпроизвеждане на проблемите ми:

 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 "Success").

Едно нещо, което трябва да се отбележи, е, че ако стъпките "b.i" - "b.iv "се изпълняват без" JQuery.post "(т.е. само извличане на данни за изображения, без първо да се прави асоциация) изображението се опреснява всеки път.

IMAGE MODIFIED

<div id="divMenuItemMedia">
<img id="imgMenuItemMedia" alt="someAlt" src="/images//{Controller}/{Action}/{InitialImageId}" />
</div>

БУТОН ЗА ПОВДИГАНЕ НА ПОПУП

<input type="button" id="btnModifyImage" name="btnModifyImage" class="t-button" value="Change Image" onclick="showImageChooser();" />

ФУНКЦИИ НА JAVASCRIPT

ГЛАВНА СТРАНИЦА

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();
}

Някой има ли представа какво може да попречи на обновяването на изображението?

Отговори:

1 за отговор № 1

Предполагам, че тук това е пълният, истински код. В този случай:

var sourceUrl = "/ {контролер} / {действие} / {pId} / {iId}";

ще бъде проблем, тъй като това не означава нищо в javaascript. Може да вмъкнете:

var sourceUrl = "@ Url.Action (" Действие "," Контролер ")"

където Action и Controller са попълнени с имената на вашия контролер / метод за действие.