bereitstellen Ich habe Probleme zu verstehen, wie meine Formulardaten von meiner Website zurück zu meinem Controller
übergeben und diesen Code für eine robustere Anwendung verwenden. Ich habe ein Formular auf meiner Indexseite, wo es nur radio buttons
und checkboxes
ist. Je nachdem, was ausgewählt ist, möchte ich diese Daten an meinen Controller zurückgeben, wo die Generierung eines Azure SAS stattfindet.Wie Daten vom HTML-Formular zu Controller
HTML
<div class="container">
<form id="sasTokenOptions">
<div class="row">
<div class="col-xs-6">
<div class="card">
<div class="card-title">SAS Token Duration</div>
<p></p>
<p>Please select a the duration of the SAS Token.</p>
</div>
<div class="container">
<div class="radio" id="">
<label><input type="radio" name="optradio" value="1" />1 hour</label>
</div>
<div class="radio">
<label><input type="radio" name="optradio" value="24" />24 hours</label>
</div>
<div class="radio">
<label><input type="radio" name="optradio" value="720" />30 days</label>
</div>
</div>
</div>
<div class="col-xs-6">
<div class="card">
<div class="card-title">SAS Token Access Permission</div>
<p></p>
<p>Please select the SAS Token's permission.</p>
</div>
<div class="container">
<div class="checkbox">
<label><input type="checkbox" name="optcheck" value="1">Read</label>
</div>
<div class="checkbox">
<label><input type="checkbox" name="optcheck" value="2">Write</label>
</div>
<div class="checkbox">
<label><input type="checkbox" name="optcheck" value="8">List</label>
</div>
<div class="checkbox">
<label><input type="checkbox" name="optcheck" value="4">Delete</label>
</div>
</div>
</div>
</div>
<div class="col-xs-6">
<button type="button" class="btn btn-primary btn-sm" id="btn-genSas">Generate SAS Token</button>
</div>
</form>
</div>
JavaScript
$(document).ready(function() {
$('input[name=optradio]').on('change', function() {
alert($('input[name=optradio]:checked', '#sasTokenOptions').val());
})
$('input[name=optcheck]').on('change', function() {
var result = null;
$('input[name=optcheck]:checked', "#sasTokenOptions").each(function() {
switch ($('input[name=optcheck]:checked', "#sasTokenOptions").val()) {
case($('input[name=optcheck]:checked', "#sasTokenOptions") == 1 || "1"):
result = "Read";
break;
case ($('input[name=optcheck]:checked', "#sasTokenOptions") == 2 || "2"):
result = "Write";
break;
case ($('input[name=optcheck]:checked', "#sasTokenOptions") == 8 || "8"):
result = "List";
break;
case ($('input[name=optcheck]:checked', "#sasTokenOptions") == 4 || "4"):
result = "Delete";
break;
}
alert(result);
})
});
$("#btn-genSas").click(function() {
$(".sasToken").show();
//generate a SAS and display it to screen
});
});
-Controller
[HttpPost]
public ActionResult GenerateSas()
{
string connectionString = "DefaultEndpointsProtocol=https;AccountName=;AccountKey=;";
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionString);
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference("publiccontainer");
var sasToken = container.GetSharedAccessSignature(new SharedAccessBlobPolicy()
{
Permissions = SharedAccessBlobPermissions.Read
});
return View();
}
Wie Sie sehen können, habe ich ein Formular mit einigen Optionsfeldern und Kontrollkästchen in meiner HTML-Seite. Ich möchte diese Daten nur an meinen Controller zurückgeben, wo sie die Azure-Instanz erstellen und ein SAS-Token erstellen und dann zurück an die View() senden.
In der 'GenerateSas()' Controller, sehe ich keinen Code, wo Sie den Formularwert erhalten, wie 'Request.Form [" optradio "];' – Eric